巨型阵列导致堆栈溢出

时间:2015-04-04 04:18:27

标签: c++ arrays stack-overflow

我将图像存储在内存中,因此需要30mb +来存储它,(2048 * 2048甚至更多,当导出为.bmp时)所以我需要增加堆栈大小。 (或者我读过。)我读过的帖子说改变了“堆积”的保留大小'和'堆栈提交大小,'但我不想在不知情的情况下改变这样的设置。

我处理的是一个2048 ^ 2的二维数组(36mb字节,因为它的结构类型为struct,结构中有3个字符),当保存它时,它的1D数组大小为38000000字节到暂时将所有东西存放在内存中。

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

1 个答案:

答案 0 :(得分:2)

不要使用堆栈分配的数组。这就是你得到的,例如,在下面的代码中:

void func()
{
 int some_big_array[LOTS_OF_ELEMENTS];
}

相反,在堆上分配它。现代C ++的做法是使用std::vector

void func()
{
 std::vector<int> some_big_vector(LOTS_OF_ELEMENTS);
}
在常见情况下,

30mb是堆的少量内存。