【发布时间】:2011-02-03 06:20:53
【问题描述】:
在下面的代码段中,free(x)之后,为什么y变成了0?
据我了解,x指向的堆中的内存,y仍然指向的内存,还没有分配给别人,怎么改成0 ?
而且,我不认为是 free(x) 将其更改为 0。
有没有cmets?
#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;
}
【问题讨论】:
-
太阳耀斑。这几乎总是因为太阳耀斑。
标签: c pointers dangling-pointer