且听且看 2020-03-26 00:28 采纳率: 0%
浏览 172

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指针,当然有错误啦

    评论

报告相同问题?

悬赏问题

  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题