【发布时间】:2012-11-06 03:35:05
【问题描述】:
我正在使用 IAR Embedded Workbench IDE 和 TI CC2540 蓝牙低功耗 8051 芯片进行 C 项目。
在处理项目时,我似乎遇到了大量的 XData 堆栈和 Idata 堆栈溢出,我很难确定溢出的来源。我正在通过 UART 端口处理大量字符串。
我想知道是否有人对如何确保在分配内存后释放内存并确保我保持在堆栈和堆的边界内有任何提示。
谢谢
【问题讨论】:
-
知道你的堆栈大小,检查代码看看你的函数中是否使用了任何非静态的大数组或结构,这很可能导致堆栈溢出。
-
您是否使用堆栈视图来监控堆栈使用情况?它会告诉您堆栈中有哪些项目,以及它有多满。
-
所以现在,我有一个大型结构,我根据需要动态分配和释放,并作为指针传递。我从来没有真正一次创建过一个以上的这些结构。该结构还包含一个指向字符串的指针,我也分配和释放该字符串。静态创建这个结构有区别吗?我看不出你如何拥有这个结构的静态声明并通过引用传递它。
标签: c debugging memory-leaks stack-overflow iar