swoole/phpx

关于Variant计数管理设计

Closed this issue · 1 comments

能否把Variant关于reference的逻辑直接干掉,统一走一致的引用计数管理?

    Variant(zval *v)
    {
        reference = false;
        ref_val = NULL;
        memcpy(&val, v, sizeof(zval));
        zval_add_ref(&val);
    }
    Variant(zval *v, bool ref)
    {
        ref_val = v;
        reference = ref;
    }

第二个构造函数引入了ref的概念,感觉很别扭。

问题是:能否直接干掉ref的设计,统一走zval的引用计数管理,这样会带来什么问题。

@matyhtf 辛苦解释下~

扩展函数的输入输出需要依赖这个,需要直接引用 PHP 层的 zval *,不能进行复制。否则无法实现直接操作。