关于栈区分配空间问题??不是说好的从高到底吗??

局部变量不应该都存在在栈区吗??为什么分配的地址感觉好像是从低到高??
为什么运行结果是下面的样子啊??不明白,求教??

 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试一下看看他怎么分配的内存。理论是堆低到高栈高到低。