我试图诋毁一个链接列表但是应用了一个错误,分段错误,我不知道为什么会这样,以及如何解决这个问题;这是我的代码:
void delete_list(LIST L)
{
position p;
p = L->next;
L->next = NULL;
while(p != NULL)
{
free(p);
p = p->next;
}
}
它应该在删除或空的某个地方,但我不知道如何修复它,任何人都可以提供帮助,谢谢
答案 0 :(得分:2)
在delete_list
free(p);
p = p->next;
你释放内存,然后尝试访问它。释放tmp
时,您需要一些p->next
指针,该指针将保留p
。
也许是这样的:
position p,t;
p = L->next;
L->next = NULL;
while( p )
{
t = p;
p=p->next;
free(t);
}