用了这么久unset函数,现在才知道原理是这样

用了这么久unset函数,现在才知道原理是这样

php unset

unset()这个函数应该都用过,用来清除变量,删除变量。

现在有一个问题,比如

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

那么这时候$b也是’abc’。这两个变量指向同一个内存地址。

如果现在

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

会是什么结果呢?

答案是

abc

这是为什么呢?明明两个变量指向同一个内存地址。

原因是unset只是删除了这个变量,也就是删除了这个变量的指针,但是并没有删除这个内存地址,这个内存区域还存在

那么什么时候删除这个内存地址呢?这个是由GC垃圾回收机制来删除的,如果没有变量使用这个内存地址,那么垃圾回收就会开始运作了。

原创文章 84 获赞 7 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Thepatterraining/article/details/106118408