全局数组分配 - 堆栈还是堆?

时间:2014-02-25 08:40:05

标签: c++ c visual-studio stack heap

我正在使用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的位置?

2 个答案:

答案 0 :(得分:9)

C ++术语是自动,动态和静态存储。 Globals将驻留在静态存储中 - 特定实现如何处理它取决于它们。

答案 1 :(得分:2)

它不存储在堆栈中,也不存储在堆中。

glob_arr具有静态存储持续时间,并且由于您未明确初始化它,因此它存储在程序的读/写RAM段中,通常称为.bss。< / p>