temp = Head;
while (Head != NULL) {
Head = temp->nextPtr;
free(temp);
}
在我的项目中,我使用临时链表,我想同时删除链表中的所有元素,但编译器会给出分段错误。
答案 0 :(得分:5)
你在那里某处,在循环的开头或结尾都缺少temp=Head;
... temp停留在第一个头上。
最简单的方法是将temp=Head;
从循环前移到循环内的第一行。
while (Head != NULL) {
temp = Head;
Head = temp->nextPtr;
free(temp);
}
答案 1 :(得分:1)
我不认为您的编译器正在提供Segmentation Fault
。即使在相当糟糕的投入下,它也不应该是段落错误。我认为您的程序导致了段错误:您忽略了在循环体内设置temp
。