PHP變量內存分配

1、php中的變量都存放在zval的變量容器中。zval的結構如下表所示:

類型 is_ref refcount
其中類型:爲變量類型,值:爲變量的值,is_ref是bool值,變量是否有別名,如果有則爲true,refcount:引用此變量的變量個數。當refcount爲1時,is_ref爲false。

2、將一個變量 賦值給另一個變量時(例如:$a=$b),不會立即爲新變量$a分配內存空間,而是在原變量$b的zval中給refcount加1。 只有當原變量或者發生改變時,纔會爲新變量分配內存空間,同時原變量的refcount減 1 。當然,如果unset原變量,新變量直接就使用原變量的zval而不是重新分配。&引用賦值時,原變量的is_ref 變爲1,refcount 加1.  如果給一個變量&賦值,會爲$a變量分配空間。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章