导致堆栈溢出的巨大阵列
问题描述:
我将图像存储在内存中,所以需要30mb +来存储所有内容(导出为.bmp时为2048 * 2048甚至更多),因此我需要增加堆栈大小。 (或者我读。)我读的帖子说改变'堆栈保留大小'和'堆栈提交大小',但我不想在没有真正知道的情况下改变这种设置。导致堆栈溢出的巨大阵列
我正在处理2048^2(36mb字节的二维数组,因为它的结构中带有3个字符的struct类型),并且在保存时它有一个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的内存堆量小,在相同的境况。
好的,我会试试看,谢谢。 (P.S.,是矢量与栈的语法相同吗?比如数组[5] [67])。 – null 2015-04-04 04:26:13
@PaoloMazzon它没有。例如,参见[这里](http://stackoverflow.com/questions/823562/multi-dimensional-vector)。用法与数组具有相同的语法。但是,声明没有。此外,如果您使用C++ 11,则可以像数组一样初始化多维矢量。 – Pradhan 2015-04-04 04:27:34
编辑:这是我第三次得到矢量的东西只是放在我身上。请你能解释一下这个矢量,怎么用它等等......当我在这个网站上问一个问题时,我发现它真的很烦人,人们只是放弃了一些句法并说“这样做”。 (夸大)我使用二维数组,我完全不知道如何处理2D矢量。 – null 2015-04-04 04:36:23