我一直對c語言使用free函數之後,指針所指向的內容有什麼變化比較迷惑,所以寫了個程序,看看到底是什麼的結果。
#include <stdio.h>
#include <malloc.h>
typedef struct node
{
int data;
struct node *next;
}node, *nodePtr;
void main()
{
nodePtr p = (nodePtr)malloc(sizeof(node));
nodePtr r = (nodePtr)malloc(sizeof(node));
p->data = 5;
r->data = 6;
printf("p: %d\n", p);
printf("p->data: %d\n", p->data);
printf("r: %d\n", r);
printf("r->data: %d\n", r->data);
p->next = r;
printf("p': %d\n", p);
printf("p'->data: %d\n", p->data);
printf("p'->next: %d\n", p->next);
printf("p'->next->data: %d\n", p->next->data);
printf("r': %d\n", r);
printf("r'->data: %d\n", r->data);
free(p);
printf("p'': %d\n", p);
printf("p''->data: %d\n", p->data);
printf("p''->next: %d\n", p->next);
printf("p''->next->data: %d\n", p->next->data);
printf("r'': %d\n", r);
printf("r''->data: %d\n", r->data);
}