висячий указатель, причина изменения значения после free ()?
В следующем сегменте кода после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;
}