记录MDK的一个堆栈问题
static uint8_t _GetFlag(void) {
uint8_t buffer[1024];
...
return buffer[0] == 0x01 || buffer[0] == 0x02;
}
int main() {
if (!_GetFlag()) {
...
}
// 注意: 因为static的存在_GetFlag()被优化了, buffer依然占用了栈空间不释放,导致了后面函数调用能用到的栈空间减少
// 解决方法是去掉static, 也就是 uint8_t _GetFlag(void) { ... }
...
while (1) {
...
}
}
浙公网安备 33010602011771号