局部变量不应该都存在在栈区吗??为什么分配的地址感觉好像是从低到高??
为什么运行结果是下面的样子啊??不明白,求教??
include <iostream>
using namespace std;
int main()
{
int a,b,c;
cout<<&a<<endl;
cout<<&b<<endl;
cout<<&c<<endl;
return 0;
}
运行结果:
0x7ffc7e23abb4
0x7ffc7e23abb8
0x7ffc7e23abbc
这个具体分配方向取决于编译器和os
你什么编译器,我这里VC++ 6.0没问题
0013FF3C
0013FF38
0013FF34
Press any key to continue
0xff8a578c
0xff8a5788
0xff8a5784
这是GCC的编译结果,也是对的。
具体如何,还取决于 编译器编译时候的配置和状态,例如增量编译
最合理的是顺序配置,这样省时省力,编译器也不需要额外做些什么
我猜测是gcc版本或者编译器优化,gcc版本更大一点,你可以拿GDB试一下看看他怎么分配的内存。理论是堆低到高栈高到低。