php变量 写时改变 写时复制

写时复制

$var = 1;

$var2 = $var; #此时$var2 与 $var 指向同一个zval refcount = 2;

$var = 2; # 此时$val 改变 所以 $var 与 $var2 指向的zval不能相同了 给$var 新建了一个zval  称为:写时复制 (复制zval)

写时分离

$var3 = 1;

$var4 = &$var; #此时$var3 与 $var4 指向同一个zval refcount = 2, is_ref = 1;

$var3 = 2; #此时$var3与$var4 仍然指向同一个zval refcount = 2, is_ref = 1;      没有新建zval 成为:写时改变; 

$var5 = $var3; #此时会为$var5 新建一个zval 因为 $var3 指向的zval的is_ref = 1    即存在(写时改变)关联;

 

 

由此可见, $a=$b; 与 $a=&$b; 在PHP对内存的使用上没有区别(值不变化时);

http://www.cnblogs.com/a-flydog/p/6122695.html

http://www.laruence.com/2008/09/19/520.html

posted @ 2017-04-11 19:49  躺着就赢了  阅读(706)  评论(0编辑  收藏  举报