C++ 导致堆栈溢出的巨型阵列

C++ 导致堆栈溢出的巨型阵列,c++,arrays,stack-overflow,C++,Arrays,Stack Overflow,我将图像存储在内存中,因此需要30mb+才能存储全部图像(2048*2048,当导出为.bmp时甚至更多),因此我需要增加堆栈大小。我读到的帖子说更改“堆栈保留大小”和“堆栈提交大小”,但我不想在不知道的情况下更改设置 我正在处理一个2048^2的2D数组(36mb字节,因为它是struct类型,在struct中有3个字符),当保存它时,它有一个38000000字节的1D数组大小,用于临时存储内存中的所有内容 有人能告诉我如何将堆栈大小增加到这个数量吗?不要使用堆栈分配的数组。这就是您在以下代码

我将图像存储在内存中,因此需要30mb+才能存储全部图像(2048*2048,当导出为.bmp时甚至更多),因此我需要增加堆栈大小。我读到的帖子说更改“堆栈保留大小”和“堆栈提交大小”,但我不想在不知道的情况下更改设置

我正在处理一个2048^2的2D数组(36mb字节,因为它是struct类型,在struct中有3个字符),当保存它时,它有一个38000000字节的1D数组大小,用于临时存储内存中的所有内容


有人能告诉我如何将堆栈大小增加到这个数量吗?

不要使用堆栈分配的数组。这就是您在以下代码中得到的结果:

void func()
{
 int some_big_array[LOTS_OF_ELEMENTS];
}
相反,在堆上分配它。现代C++的使用方法是:

void func()
{
向量一些大向量(大量元素);
}

通常情况下,30mb是堆的一小部分内存。

好的,我试试看,谢谢。(另外,向量是否与堆栈式数组的语法相同?例如[5][67])@PaoloMazzon它没有。例如,见。用法与数组的语法相同。然而,该声明并没有这样做。另外,如果你使用的是C++11,你可以像初始化数组一样初始化多维向量。编辑:这是我第三次把向量的东西放在我身上。请你解释一下向量,如何使用它,等等。。。当我在这个网站(很棒的网站)上问一个问题时,人们会放弃一些语法,说“做吧。”(夸张了)我使用的是2D数组,我完全不知道如何处理2D向量。恐怕关于使用2D向量的问题太广泛了,我现在无法回答。请仔细阅读我链接到的答案,或者阅读一篇带有示例的教程。你的问题越具体,你就越有可能得到更好的答案。
void func()
{
 std::vector<int> some_big_vector(LOTS_OF_ELEMENTS);
}