我有以下代码
int main(int argc, char *argv[]) {
int value1 = 10;
int value2 = 11;
return 0;
}
当我调试代码时,&value2高于&value1。这意味着先将value2压入堆栈,然后再压入value1。
这是gcc的正常行为吗?
为什么gcc从下至上编译变量?
叮当声也一样吗?
谢谢
堆栈上局部变量的顺序完全取决于实现,因此不必看起来一致。
[使用gcc 4.8.5编译以上代码并运行它时,value1
的地址比value2
高。这表明您无法对堆栈上的变量顺序进行任何假设。