8 IAR堆栈报错疑难解析

说明该文档可能会长期更新

报错:"The stack 'CSTACK' is filled to 100% (512bytes used out of 512). The warning threshold is set to 90%. "

出现这个报错就是说栈空间用完了,当然有时候可以忽略这个错误,它只是个warning,在设置断点的时候可能会报出来。忽略之后可能会导致无法设置断点,程序执行异常,复位等情况。
这个问题有以下几种原因:

  • 数组越界
    检查是否存在数组越界的情况。
  • 有FreeRTOS系统(或别的系统)
    检查为线程分配的栈空间是否不足
  • 临时变量或全局变量过大
    建议比较大的临时变量(包括形参),全局变量,使用malloc分配堆空间,只要注意哪里malloc了就对应在哪里free就可以了。
  • 函数隐性定义
    即没有直接包含其他文件中函数的头文件,在warning中会有提示,解决warning就可以了。
    程序中的warning实际上也会提示一些致命错误,只不过这些错误并不影响程序运行起来,没有报error并不保证程序不会崩溃或者按预期运行。

你可能感兴趣的:(8 IAR堆栈报错疑难解析)