puntero colgante, razón del cambio de valor después de free ()?
En el siguiente segmento de código, despuésfree(x)
, por quey
convertido en 0?
Según tengo entendido, el recuerdo en el montón al que apuntabax
, y todavía está siendo señalado pory
, no se ha asignado a otra persona, entonces, ¿cómo puede cambiar a 0?
Y además, no creo que seafree(x)
eso lo cambió a 0.
¿Algún comentario?
#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;
}