您的位置:PHPChina 开源社区门户 >> >> PHP基础编程(问答求助) >> 查看帖子
字体: 小 中 大
cers 发表于: 2008-8-07 20:57 来源: PHPChina 开源社区门户
QUOTE:
原帖由 fhjr999 于 2008-8-7 23:53 发表 看下unset的说明你就明白了,unset并不是将数据从内存中删除掉,而仅仅会破坏掉变量与值的对应关系,我不太清楚怎么说,反正就是这么个意思。 $a = 2; 当unset($a)之后,2这个值仍然存在与内存中,这就是为什么$ ...
最新回复
b存放了a的地址,那a都没了,b指向哪里?
栈内存里有 $a 和 $b两个值
刚开始是1 后来变成2
unset删除$a 后 $b也存在
是不是变量a和b只是指向相同的内存地址
unset只是取消了a的指向,而那个地址的值不受影响
一个里面存的是值 一个里面存的是值的地址 好像是这样的 也不是很熟悉 呵呵
$a = 2;
当unset($a)之后,2这个值仍然存在与内存中,这就是为什么$b仍然等于2的原因。
这也是为什么很多人说unset变量,还不如直接让变量=null来的块的原因。
因为=null会释放内存,而unset不会。
QUOTE:
瞎讲。谁告诉你unset不详情看一下手册
$a=12;
$b=$a
变量表(memory)
-----------------
name address
'a' : fe659c6;
'b' : fe659d9;
memory:
FE659c6 : 12;
..
fe659d9 : 12;
uset($a);
变量表(memory)
-----------------
name address
'b' : fe659d9;
memory:
FE659c6 : 12; (freed)
..
fe659d9 : 12;
2>
$a=12;
$b= &$a
变量表(memory)
-----------------
name address
'a' : fe659c6;
'b' : fe659c6;
memory:
FE659c6 : 12;
unset ($a);
----
变量表(memory)
-----------------
name address
'b' : fe659c6;
memory:
FE659c6 : 12;
[ 本帖最后由 9945 于 2008-8-8 08:17 编辑 ]