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,但是没什么卵用,请问,这是什么情况?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
那如果这样的话:如下void Function_A(void)
{
int32_t i =3;
int32_t Num =0;
while(1)
{
num=i;//将i的值赋给num
function_B();
......
}
}
第一次循环使用num是3,那第二次使用num岂不是不是3了?如果真是这样,唯一的解决办法是将i设置为全局变量吗?
一周热门 更多>