Linux 函数局部变量的堆栈使用

2014-11-24 12:18:56 · 作者: · 浏览: 2

从这个例子的输出,可以看到从高地址开始分配,所以a1的地址是比a2大;这里要注意的时,单从一个数组来分析的话,比如aa,


那么地址是从低位开始的,也就是如果我们对aa的操作越界了的话,那么可能会把a1和a2的值给覆盖掉,是从低往高处踩内存的。



void print(int b1,int b2)
{
int a1=0,a2=1;


printf("a1 addr:0x%08x\n\n",&a1);
printf("a2 addr:0x%08x\n\n",&a2);



int aa[2];
printf("aa1 addr:0x%08x\n\n",&aa[0]);
printf("aa2 addr:0x%08x\n\n",&aa[1]);
return ;
}



输出是


a1 addr:0x0ee07f3c


a2 addr:0x0ee07f38


aa1 addr:0x0ee07f30


aa2 addr:0x0ee07f34