内存中的变量存储在C++中?

Puy*_*ver 0 c++

如果我有这样的代码:

int e;
int* f;

int main() {
    int a, b, c;
    int* d;
}
Run Code Online (Sandbox Code Playgroud)

在内存中存储这些变量的位置?而且,定义全局变量的问题是什么(在函数中,如本例中的main)?

Ben*_*igt 9

实际上并没有保证在内存中放置变量,只保证行为.

但是,在大多数(或许是全部)实际系统中,e并且f将在全局数据段,同时a,b,c,d在寄存器中的混合和调用堆栈上.双方fd可以指向任何地方在内存中(当然,有MMU这不正是如此,他们可以在任何地方,其中被映射到进程的内存子集点).

  • @Puy:您肯定会遇到许多全局变量的设计问题. (4认同)

Kie*_*one 6

a,b,c和d将存在于堆栈中.如果要创建一个int实例(使用malloc或new),那么它将在堆上运行 - 但是名为"d"的指针仍然存在于堆栈中.

e和f在应用程序的内存空间中分配空间,即所谓的"数据段" - 请参阅:

http://en.wikipedia.org/wiki/Data_segment

您还询问了堆栈大小:由编译器配置,请参见此处:

http://msdn.microsoft.com/en-us/library/tdkhxaks(VS.71).aspx