C语言释放链表节点出现错误
current = head; 
while (current != NULL) 
{
current = head; 
head = current->next; 
free(current);
}

这是书上的一段代码,但是程序在执行过程中却无法正常停止,出现报错,请问是什么原因?

但是将这段代码调换一下顺序后却能正常运行:

current = head; 
while (current != NULL) 
{
head = current->next; 
free(current);
current = head; 
}

1个回答

第一段代码再进行第二次循环前最后一条语句已经释放了current指针,而第二次循环的条件却又引用了已经释放的current指针,当然有错误啦

m0_46655998
且听且看 懂了,谢谢大哥
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问