用了这么久unset函数,现在才知道原理是这样
php unset
unset()
这个函数应该都用过,用来清除变量,删除变量。
现在有一个问题,比如
$a = 'abc';
$b = &$a;
echo $b;
那么这时候$b也是’abc’。这两个变量指向同一个内存地址。
如果现在
//...
unset($a);
echo $b;
会是什么结果呢?
答案是
abc
这是为什么呢?明明两个变量指向同一个内存地址。
原因是unset
只是删除了这个变量,也就是删除了这个变量的指针,但是并没有删除这个内存地址,这个内存区域还存在。
那么什么时候删除这个内存地址呢?这个是由GC垃圾回收机制来删除的,如果没有变量使用这个内存地址,那么垃圾回收就会开始运作了。