用了這麼久unset函數,現在才知道原理是這樣

用了這麼久unset函數,現在才知道原理是這樣

php unset

unset()這個函數應該都用過,用來清除變量,刪除變量。

現在有一個問題,比如

$a = 'abc';
$b = &$a;
echo $b;

那麼這時候$b也是’abc’。這兩個變量指向同一個內存地址。

如果現在

//...
unset($a);
echo $b;

會是什麼結果呢?

答案是

abc

這是爲什麼呢?明明兩個變量指向同一個內存地址。

原因是unset只是刪除了這個變量,也就是刪除了這個變量的指針,但是並沒有刪除這個內存地址,這個內存區域還存在

那麼什麼時候刪除這個內存地址呢?這個是由GC垃圾回收機制來刪除的,如果沒有變量使用這個內存地址,那麼垃圾回收就會開始運作了。

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