我正在使用 IAR Embedded Workbench IDE 和 TI CC2540 蓝牙低功耗 8051 芯片进行 C 项目。
在处理该项目时,我似乎遇到了大量的 XData 堆栈和 Idata 堆栈溢出,我很难确定溢出的源头。我正在通过 UART 端口处理大量字符串。
我想知道是否有人对如何确保我在分配内存后释放内存有任何提示,并确保我保持在堆栈和堆的边界内。
谢谢
最佳答案
好吧,为了避免堆栈溢出,你应该避免以下事情:
1)递归(在嵌入式系统中使用递归不是一个好主意)
2)尽量避免动态分配。在大多数情况下,您不需要它。
在汽车行业,有几条 ECU 编程规则称为 MISRA 规则,建议不要使用动态分配的内存和递归。这是一个 link
IAR Embedded Workbench 是为数不多的支持 MISRA C 的 IDE 之一。尝试启用 MISRA C 选项(这可能表明您的问题出在哪里)。看看是怎么做到的here .
关于c - 如何在 IAR Workbench 中用 C 调试堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13243972/