【发布时间】:2010-10-22 14:32:33
【问题描述】:
我对堆栈内存组织非常好奇,因为我实验了后台发生的事情,并且显然看到它与我从书本中获得的微小知识相匹配。只是想检查一下我的理解是否正确。
我有一个基本程序——有 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 是一个值类型,但是用一个指向 main 的 char * 指针再次检查它并获得类似的结果。
00401390 0022FF44 00401396
Press any key to continue . . .
我主要理解代码和变量被分配到不同的内存段(代码段/数据段)。所以基本上说调用堆栈折叠函数执行的基本信息(它们的局部变量、参数、返回点)并将它们保存在数据段中是正确的吗?
【问题讨论】:
标签: c++ c memory stack segments