background image

2----------------------------
a:(refcount=2, is_ref=1),int 1
b:(refcount=2, is_ref=0),int 1
c:(refcount=2, is_ref=0),int 1
d:(refcount=2, is_ref=1),int 1
注意此时 a,d 在一起了,他们使用同一个 zval,而 bc 使用一个新生成的 zval,同时重新
计算两个 zval 的 refcount 和 is_ref
3----------------------------
a:(refcount=2, is_ref=1),int 2
b:(refcount=2, is_ref=0),int 1
c:(refcount=2, is_ref=0),int 1
d:(refcount=2, is_ref=1),int 2
可以知道 ad 这两个 is_ref=1 的好基友的值是同时改变的
4----------------------------
a:(refcount=2, is_ref=1),int 2
b:(refcount=1, is_ref=0),null
c:(refcount=1, is_ref=0),int 1
d:(refcount=2, is_ref=1),int 2
bc 由于他们的 zval 的 is_ref=0,所以他们不是好基友,他们的值不会同时改变,于是 bc
的 zval 再次分裂,b = null c = 1