我将以下内容编译为Windows下的Visual Studio 2008。
当我声明一个全局数组如下:
//.cpp file
// on a global scale
// (i.e. outside any class definition)
MY_ITEM glob_arr[1024];
where
//.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];
};
< p > glob_arr
是在堆栈还是进程堆中分配的?< /p >
.bss
段或.data
段中,具体取决于它是否有显式初始化。我非常确定Windows的行为类似,尽管我不确定段的名称。 - James Kanze