导致堆栈溢出的巨大阵列

问题描述:

我将图像存储在内存中,所以需要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的内存堆量小,在相同的境况。

+0

好的,我会试试看,谢谢。 (P.S.,是矢量与栈的语法相同吗?比如数组[5] [67])。 – null 2015-04-04 04:26:13

+0

@PaoloMazzon它没有。例如,参见[这里](http://*.com/questions/823562/multi-dimensional-vector)。用法与数组具有相同的语法。但是,声明没有。此外,如果您使用C++ 11,则可以像数组一样初始化多维矢量。 – Pradhan 2015-04-04 04:27:34

+0

编辑:这是我第三次得到矢量的东西只是放在我身上。请你能解释一下这个矢量,怎么用它等等......当我在这个网站上问一个问题时,我发现它真的很烦人,人们只是放弃了一些句法并说“这样做”。 (夸大)我使用二维数组,我完全不知道如何处理2D矢量。 – null 2015-04-04 04:36:23