0
temp = Head;
while (Head != NULL) {
Head = temp->nextPtr;
free(temp);
}
在我的项目中,我使用临时链表,我想同时删除链接列表中的所有元素,但编译器给出了分段错误。删除链接列表中的所有元素
temp = Head;
while (Head != NULL) {
Head = temp->nextPtr;
free(temp);
}
在我的项目中,我使用临时链表,我想同时删除链接列表中的所有元素,但编译器给出了分段错误。删除链接列表中的所有元素
您错过了temp=Head;
某处,在循环的开始或结束处... temp保持在第一个头上。
最简单的方法是将temp=Head;
从循环前移动到循环内的第一行。
while (Head != NULL) {
temp = Head;
Head = temp->nextPtr;
free(temp);
}
我不认为你的编译器给Segmentation Fault
。即使在非常可怕的输入下,它也不应该出现段错误。我认为你的程序正在导致段错误:你忽略在你的循环体内设置temp
。
在你的代码中,你不断释放同一个节点,不是吗?我的意思是,临时指针在while循环内根本不会改变。 – dip
这只是示例代码,他们都不工作 – justuser