2015-04-04 61 views
0

我將圖像存儲在內存中,所以需要30mb +來存儲所有內容(導出爲.bmp時爲2048 * 2048甚至更多),因此我需要增加堆棧大小。 (或者我讀。)我讀的帖子說改變'堆棧保留大小'和'堆棧提交大小',但我不想在沒有真正知道的情況下改變這種設置。導致堆棧溢出的巨大陣列

我正在處理2048^2(36mb字節的二維數組,因爲它的結構中帶有3個字符的struct類型),並且在保存時它有一個38000000字節的一維數組大小,以將所有內容存儲在內存中暫時。

有人可以告訴我如何增加堆棧大小到這個數量?

回答

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的內存堆量小,在相同的境況。

+0

好的,我會試試看,謝謝。 (P.S.,是矢量與棧的語法相同嗎?比如數組[5] [67])。 – null 2015-04-04 04:26:13

+0

@PaoloMazzon它沒有。例如,參見[這裏](http://stackoverflow.com/questions/823562/multi-dimensional-vector)。用法與數組具有相同的語法。但是,聲明沒有。此外,如果您使用C++ 11,則可以像數組一樣初始化多維矢量。 – Pradhan 2015-04-04 04:27:34

+0

編輯:這是我第三次得到矢量的東西只是放在我身上。請你能解釋一下這個矢量,怎麼用它等等......當我在這個網站上問一個問題時,我發現它真的很煩人,人們只是放棄了一些句法並說「這樣做」。 (誇大)我使用二維數組,我完全不知道如何處理2D矢量。 – null 2015-04-04 04:36:23