kehuadong

记录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) {
        ...
    }
}

 

posted on 2023-03-06 22:50  kehuadong  阅读(19)  评论(0编辑  收藏  举报

导航