遇到的情况是:
有一个需要运行的函数A(),需要在函数B和函数C内运行
代码可如以下简单表示
void A(char *buf); //一个运算量较大大的一个函数,功能是对圆弧进行解码
void B()
{
A(buf1);
}
void C()
{
A(buf2);
}
通过DEBUG多次调试,得知无论是否buf1与buf2相同,在运行后函数B后,无异常,但是运行函数C却卡死并进入HardFault_Handler函数。
HardFault_Handler函数如下
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
}
}
百思不得其解
但进入HardFault_Handler函数大概率是因为栈溢出了
但是同样调用同一个函数,却存在卡死或者不卡死,那只能说明某一处不起眼的小错误,甚至可能找不到的玄学问题。
那与其找到及其细微的栈溢出问题,不如调高代码的优化等级,于是从0级调到2级,问题解决!!!
调整位置如下