17-CAM 2020-03-26 00:28 采纳率: 0%
浏览 174

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条回答 默认 最新

  • Leon_George 领域专家: 嵌入式与硬件开发技术领域 2020-03-26 08:44
    关注

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

    评论

报告相同问题?