在以下代码段中,free(x)
之后,为什么y
变为0?悬空指针,免费()后价值改变的原因?
根据我的理解,x
指向的堆中的内存,仍然被指向y
,尚未分配给其他人,那么它如何变为0?
而且,我不认为这是free(x)
它变为0
有何评论?
#include <stdio.h>
int main(int argc, char *argv[])
{
int *y = NULL;
int *x = NULL;
x = malloc(4);
*x = 5;
y = x;
printf("[%d]\n", *y); //prints 5
free(x);
printf("[%d]\n", *y); //why doesn't print 5?, prints 0 instead
return 0;
}
我的评论:不这样做 – 2010-04-01 07:26:30
**鼻魔** – jschmier 2010-04-01 07:35:09
太阳耀斑。这几乎总是因为太阳耀斑。 – 2010-04-01 07:54:32