字体:  

学到引用有点理解不了了?

cers 发表于: 2008-8-07 20:57 来源: PHPChina 开源社区门户


注释的问题,变量b是指向a的引用,a被销毁了,b为什么还有能输出?

最新回复

zcdeqq at 2008-8-07 21:10:55
TankMe at 2008-8-07 21:12:17
对.b存放a的地址.并不是b完全跟a一样
Ck_php_kira at 2008-8-07 21:13:54
cers at 2008-8-07 22:06:11
对啊
b存放了a的地址,那a都没了,b指向哪里?
CrossMaya at 2008-8-07 22:18:14
先了解内存!

栈内存里有 $a 和 $b两个值

刚开始是1 后来变成2

unset删除$a 后 $b也存在
cers at 2008-8-07 22:23:28
栈内存是什么意思?还有其他的内存?

是不是变量a和b只是指向相同的内存地址
unset只是取消了a的指向,而那个地址的值不受影响
cers at 2008-8-07 22:47:12
Uping........
SpringField at 2008-8-07 22:49:38
好像是有 栈内存 和 堆内存
一个里面存的是值 一个里面存的是值的地址  好像是这样的 也不是很熟悉 呵呵
zcdeqq at 2008-8-07 22:59:37
机器有问题
TankMe at 2008-8-07 23:41:10
建议看看C里指针那一章.
lxylxy888666 at 2008-8-07 23:41:56
很好,很强大的C指针
fhjr999 at 2008-8-07 23:53:04
看下unset的说明你就明白了,unset并不是将数据从内存中删除掉,而仅仅会破坏掉变量与值的对应关系,我不太清楚怎么说,反正就是这么个意思。

$a = 2;
当unset($a)之后,2这个值仍然存在与内存中,这就是为什么$b仍然等于2的原因。

这也是为什么很多人说unset变量,还不如直接让变量=null来的块的原因。
因为=null会释放内存,而unset不会。
flyfly99 at 2008-8-08 00:08:09

QUOTE:

原帖由 fhjr999 于 2008-8-7 23:53 发表
看下unset的说明你就明白了,unset并不是将数据从内存中删除掉,而仅仅会破坏掉变量与值的对应关系,我不太清楚怎么说,反正就是这么个意思。

$a = 2;
当unset($a)之后,2这个值仍然存在与内存中,这就是为什么$ ...
瞎讲。谁告诉你unset不
g1111111g at 2008-8-08 00:19:24
在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针
小星 at 2008-8-08 02:40:38
unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。

详情看一下手册
CrossMaya at 2008-8-08 04:20:26
$a $b同在栈内存中 不存在指针关系!
9945 at 2008-8-08 08:12:05
1>

$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 编辑 ]
ljxok2001 at 2008-8-08 08:32:00
刚刚测试了一下,unset() 只是注销了变与指针的联系,并没有注销内存的值,所以$b所指向的空间仍有效。如果用 $a=null 的话,那么 $b 就不会再有输出了,因为已经释放了内存空间。
CrossMaya at 2008-8-08 08:58:16
。。。。。
可可 at 2008-8-08 09:02:35
好,学到了引用的概念知识