ponteiro pendente, motivo da alteração do valor depois de free ()?
No seguinte segmento de código, apósfree(x)
, porquey
tornar-se 0?
Pelo meu entendimento, a memória na pilha que estava sendo apontada porx
, e ainda está sendo apontado pory
, não foi alocado para outra pessoa, então como ele pode mudar para 0?
Além disso, não acho que sejafree(x)
que mudou para 0.
Algum comentário?
#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;
}