gpt4 book ai didi

php - 为什么增加 zval 的引用计数不起作用?

转载 作者:行者123 更新时间:2023-12-01 13:14:28 25 4
gpt4 key购买 nike

我正在转储一个在 PHP 版本 7.3.5 上运行的 zval 容器(opcache 已激活并且 PHP 已启用线程安全),遵循此给定代码:

<?php 
$a = "new string";
$b = $a;
xdebug_debug_zval( 'a' );

根据 php.net documentation Example #3 增加它输出的 zval 的引用计数 refcount=2 :

a: (refcount=2, is_ref=0)='new string'

在我的设置 (php7.3.5) 中,它输出 refcount=1 :

a:
(refcount=1, is_ref=0)string 'new string' (length=10)

我实际上使用 PHP5.6 获得了与 php.net 文档相同的输出。PHP7 内部发生了什么变化以及为什么 refcount 保持为 1?

最佳答案

正如 Nikita 在评论中指出的那样,作为常量文字的字符串是 interned - 这是一个内部术语,意思类似于“字符串的单例” - 因此不计算引用。

与驻留字符串一样,不可变数组(其形状和在内存中的位置在运行时可能不会改变的数组)也不会被引用计数。

Xdebug 3.0 将更新为 this补丁,这将允许它在字符串被驻留或数组不可变时显示。

关于php - 为什么增加 zval 的引用计数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56833897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com