在下面的代码段中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;
}