【发布时间】:2010-06-02 01:22:49
【问题描述】:
我已经为这个项目工作了五个月。它是传感器网络的实时应用。我在程序的生命周期中创建了几个链接列表,并且我使用 malloc 在链接中创建一个新节点。发生的情况是程序突然停止或变得疯狂并重新启动。我使用 AVR,微控制器是 ATMEGA 1281。经过大量调试后,我发现 malloc 导致了问题。退出创建新链接的函数后,我没有释放内存,所以我猜测这最终会导致堆内存溢出或类似的事情。现在,如果我使用 free() 函数在函数末尾使用 malloc 释放内存,程序就会在控件到达 free() 时卡住。这是因为调用 free() 后内存变得过于聚集吗?
我还创建引用表,例如,如果“head”是一个新链接列表,我创建另一个名为 current 的列表并使其等于 head。
table *head;
table *current = head;
如果我使用free,函数结束后
free(current);
current = NULL:
然后程序就卡在这里了。
我不知道该怎么办。我究竟做错了什么?有没有办法增加堆内存的大小?
【问题讨论】:
标签: c memory-management malloc linked-list