在我对后台发生的事情进行实验后,我对堆栈内存组织非常好奇,并且显然看到它与我从书本上获得的微小知识相匹配。只是想检查一下我的理解是否正确。
我有一个基本程序——有 2 个函数,第一个是 foo,另一个是 main(入口点)。
void foo(){
// do something here or dont
}
int main(){
int i = 0;
printf("%p %p %p\n",foo, &i, main);
system("PAUSE");
return EXIT_SUCCESS;
};
程序的输出如下图所示,main 的局部变量 i 完全位于不相关的位置。integer 是一种值类型,但使用 char * 本地指针再次检查它并获得类似的结果。
00401390 0022FF44 00401396
Press any key to continue . . .
我主要了解代码和变量被分配到不同的内存段(代码段/数据段)。所以基本上可以说调用堆栈折叠有关函数执行的基本信息(它们的局部变量、参数、返回点)并将它们保存在数据段中吗?