为什么&second_variable的地址比&first_variable的地址高?

问题描述 投票:1回答:1

我有以下代码

int main(int argc, char *argv[]) {
    int value1 = 10;
    int value2 = 11;

    return 0;
}

当我调试代码时,&value2高于&value1。这意味着先将value2压入堆栈,然后再压入value1。

这是gcc的正常行为吗?

为什么gcc从下至上编译变量?

叮当声也一样吗?

谢谢

c gcc stack
1个回答
0
投票

堆栈上局部变量的顺序完全取决于实现,因此不必看起来一致。

[使用gcc 4.8.5编译以上代码并运行它时,value1的地址比value2高。这表明您无法对堆栈上的变量顺序进行任何假设。

© www.soinside.com 2019 - 2024. All rights reserved.