您当前的位置: 首页 >  容器

苗先生的PHP记录

暂无认证

  • 4浏览

    0关注

    190博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

zval变量容器学习笔记

苗先生的PHP记录 发布时间:2021-12-22 10:28:02 ,浏览量:4

refcount : 一个变量在指向内存空间

is_ref : 是否引用 , 0为false , 没有引用

 

$a = range(0,3) ;
xdebug_debug_zval('a'); // 这里需要安装xdebug才能打印

--------------------------------------------------------------------------------------------------

$a = range(0,3) ;
xdebug_debug_zval('a'); // 这里需要安装xdebug才能打印


$b = $a;
xdebug_debug_zval('a'); // 打印a

 第二次打印的a 有两个变量在指向这个变量内存 , 由于不是引用 , 所以is_ref=0

--------------------------------------------------------------------------------------------------------------

$a = range(0,3) ;
xdebug_debug_zval('a'); // 这里需要安装xdebug才能打印


$b = $a;
xdebug_debug_zval('a'); // 打印a

$a = range(0,3) ;
xdebug_debug_zval('a'); // 打印a

 

 a做了写操作, a做了COW机制 , 单独复制出一份内存空间做了修改 , 所以指向内存空间的变量变回了1

---------------------------------------------------------------------------------------------------------------------

$a = range(0,3) ;
xdebug_debug_zval('a'); // 这里需要安装xdebug才能打印


$b = &$a;
xdebug_debug_zval('a'); // 打印a

$a = range(0,3) ;
xdebug_debug_zval('a'); // 打印a

由于b是引用的a , b和a永远指向同一个内存空间 , 所以refcount永远为2 , 由于是引用关系 , 所以打印a时is_ref = 1

 

面试时如果有问到内存引用 , 可通过画图分析法来模拟内存使用情况

关注
打赏
1665468453
查看更多评论
立即登录/注册

微信扫码登录

0.1088s