【问题标题】:Why the refcount is 3 not 2?为什么 refcount 是 3 而不是 2?
【发布时间】:2018-12-10 08:31:48
【问题描述】:
function A($a) {
    xdebug_debug_zval('a');
}
$a = 1; # refcount->1
A($a); # refcount->2

评论是我认为引用计数应该是的。

但输出是:

a: (refcount=3, is_ref=0)=1

1 个额外的引用计数来自哪里?

【问题讨论】:

    标签: php php-7 php-5.6 php-5.5 php-5.4


    【解决方案1】:

    在 PHP 文档中描述,您必须通过引用传递参数。但是通过引用传递参数在 PHP 5.x 中被删除了。这个问题导致我们无法使用debug_zval_dump。用这个函数不可能得到正确的引用计数。

    我想不推荐使用这个函数来计算引用。在我的测试环境(Apache / PHP7.1)中,您的示例产生的引用计数为 1。似乎有点棘手。

    【讨论】:

    • 是的,debug_zval_dump 不可靠,所以我用 xdebug 更新代码。
    猜你喜欢
    • 2011-05-12
    • 2013-08-12
    • 2017-07-10
    • 2010-11-01
    • 2014-12-29
    • 2021-09-01
    • 2017-02-02
    • 2020-05-18
    • 2019-07-16
    相关资源
    最近更新 更多