次のコードセグメントでは、の後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;
}