void Function_A(void)
{
int32_t i =0;
function_B();
......
}
void function_B(void)
{
int32_t j=0;
......
......
}
调试时发现,执行到A函数的int i=0时,i分配的地址是0x20051C4,进入B函数后,发现j分配的地址也是这么多,执行完B函数后,i的地址为0x2005100,于是i的值就不受控制的变了....
问题:是什么原因导致i的地址被抢了呢?是不是堆栈问题?我的堆栈设置为:
Stack_Size EQU 0x5000
Heap_Size EQU 0x200
Stack_Size设置过0x6000,但是没什么卵用,请问,这是什么情况?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
刚刚试了一下,有图有真相,图不方便打印出来,第一次地址是51C4,第二次是5100.真的如二楼所说吗?
如果这是正常现象的话那函数内的局部变量还有什么用?
看一下汇编就明白了
一周热门 更多>