以下程序是书中给出的删除表的方法
void DeleteList(List L)
{
Position P, Tmp;
P = L->Next;/*Header assumed*/
L->Next = NULL;
while(P != NULL)
{
Tmp = P->Next;
free(P);
P = Tmp;
}
}
为什么程序中表头 List L 不需要进行free呢?毕竟它也是指向了一个结构体元素。
答:我的理解:List L是不可以free的
1:free 是把指针指向的那块内存释放了,标记这块内存系统可以回收再用,指针还是存在的,仍然指向这块内存,不free L, 则L->next = null;
如果free L, 这块内存在下一次会被利用重写,L->next地址就不一定在什么地方。
2,free L, 并把 L = null应该是可以的,取决于你的这条指针还要不要继续使用。
答案不一定正确,仅供参考!