Llamo a free (), pero el puntero todavía tiene datos y su contenido no ha cambiado
El código está abajo.
Mi pregunta es sobre el resultado. Quiero entender, ¿por qué después de llamar a free (p) p-> elem se convierte en '0', pero p-> str todavía contiene "hola"?
#define LEN (sizeof(struct node))
typedef struct node
{
int elem;
char *str;
}*p_node;
int main(void)
{
p_node p;
p=(p_node)malloc(LEN);
p->elem=99;
p->str="hello";
printf("the p->elem:%d\n",p->elem);
printf("the p->str :%s\n",p->str);
free(p);
printf("the p->elem:%d\n",p->elem);
printf("the p->str :%s\n",p->str);
return 0;
}