声明本地数组时出错

时间:2014-10-08 18:05:06

标签: c++ arrays

这样的事情会引发错误:

using namespace std;


int main()
{
    int test[1000000] = {};
}

这样的事情不会:

using namespace std;

int test[1000000] = {};

int main()
{
}

为什么?一百万美元甚至对内存要求不高。

2 个答案:

答案 0 :(得分:5)

第一个在堆栈上分配空间。第二个在编译/链接时分配数据段中的空间。堆栈的大小有限。

答案 1 :(得分:0)

Stack不是动态的,但你也可以这样做

int* arr = new int[1000000];

但是不要忘记删除它,因为这会在堆中声明数组,这是动态内存,并通过从堆中删除它来防止内存泄漏。

示例:

delete arr;

这只是如何使用内存的替代方法