我研究过在linux系统中堆栈从高内存地址增长到低内存地址。为了测试这一点,我写了一个小代码:
#include<stdio.h>
void func() {
int var1;
int var2;
printf("Func: %p %p",&var1,&var2);
}
int main() {
int var1;
int var2;
printf("Main: %p %p\n",&var1,&var2);
func();
return 0;
}
当我在 ideone 中运行它时,我得到以下输出:
Main: 0xbfd958f0 0xbfd958f4
Func: 0xbfd958f8 0xbfd958fc
根据教科书,Func 应该存储在比 Main 更低的内存地址中,但这里发生的情况完全相反。有人可以向我解释这种行为。这是ideone 的链接。
谢谢你。