我正在使用Visual Studio 2008 for Windows编译以下内容。
当我声明一个全局数组时:
//.cpp file
// on a global scale
// (i.e. outside any class definition)
MY_ITEM glob_arr[1024];
,其中
//.h file
extern MY_ITEM glob_arr[1024];
class MyClass
{
public:
MyClass()
{
//Start using glob_arr
glob_arr[0].v = 0;
//...
}
};
和
struct MY_ITEM{
int v;
WCHAR chrs[64];
};
从堆栈或进程堆中分配glob_arr
的位置?
答案 0 :(得分:9)
C ++术语是自动,动态和静态存储。 Globals将驻留在静态存储中 - 特定实现如何处理它取决于它们。
答案 1 :(得分:2)
它不存储在堆栈中,也不存储在堆中。
glob_arr
具有静态存储持续时间,并且由于您未明确初始化它,因此它存储在程序的读/写RAM段中,通常称为.bss
。< / p>