我将图像存储在内存中,因此需要 30mb 以上的空间来存储所有内容(2048*2048,导出为 .bmp 时甚至更多)因此我需要增加堆栈大小。 (或者我是这样读的。)我读到的帖子说更改“堆栈保留大小”和“堆栈提交大小”,但我不想在不知道的情况下更改这样的设置。
我正在处理一个 2048^2 的二维数组(36mb 字节,因为它是结构类型,在结构中有 3 个字符)并且在保存它时它有一个 38000000 字节的一维数组大小来临时将所有内容存储在内存中.
有人可以告诉我如何将堆栈大小增加到这个数量吗?
最佳答案
不要使用堆栈分配的数组。这就是您在以下代码中得到的结果:
void func()
{
int some_big_array[LOTS_OF_ELEMENTS];
}
相反,将其分配在堆上。现代 C++ 的做法是使用 std::vector
:
void func()
{
std::vector<int> some_big_vector(LOTS_OF_ELEMENTS);
}
在一般情况下,30mb 是堆的少量内存。
关于c++ - 巨大的数组导致堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29442659/