当我使用free()时,c中的程序进入无限循环

时间:2017-05-12 14:24:40

标签: c malloc free

我在c中尝试了一个链表程序,我使用malloc()动态分配内存,然后当我尝试在函数末尾使用free()时,程序运行到一个无限循环。

为什么会这样?

sed

1 个答案:

答案 0 :(得分:1)

您在错误的位置使用free(),导致删除列表中新插入的节点。

  

我应该使用free()吗?

是的,因为您使用的是malloc()。您动态分配的内存应该由您取消分配,否则将发生内存泄漏。

  那么我应该在哪里使用free()呢?

代替您不再需要列表的代码。例如,在main()

的末尾

不相关,但通过查看您的insert(),我可以看到head是一个全局变量,应该可以避免。将它作为参数传递给列表函数,并使此变量非全局变量是一种更好的方法。如果您愿意,请查看此list's代码,该代码已完全注释,是我以前学过的代码。

Do I cast the result of malloc?不!