Enviado em 24/06/2011 - 18:13h
ola pessoal
após liberar a memória alocada nesse programa em C, p->j continua com valor 'a'. Depois de free(p) toda a estrutura apontada por p não deveria ser apagada?
#include <stdio.h>
#include <stdlib.h>
struct dados {
int i;
char j;
} *p;
main() {
p = (struct dados *)malloc(sizeof(struct dados));
(*p).i = 10;
(*p).j = 'a';
free(p);
printf("%d", (*p).i); //saída: 0
printf("%c", (*p).j); //saída: a
}
após liberar a memória alocada nesse programa em C, p->j continua com valor 'a'. Depois de free(p) toda a estrutura apontada por p não deveria ser apagada?
#include <stdio.h>
#include <stdlib.h>
struct dados {
int i;
char j;
} *p;
main() {
p = (struct dados *)malloc(sizeof(struct dados));
(*p).i = 10;
(*p).j = 'a';
free(p);
printf("%d", (*p).i); //saída: 0
printf("%c", (*p).j); //saída: a
}