2013-06-27 90 views
2

我已經做作出的堆棧上的二維數組:2D陣列100x100堆棧溢出;在堆上沒有錯誤。 C++

grid gridArray[100][100] = {{}}; 

不過,我得到一個堆棧溢出。

auto gridArray = new grid[100][100](); 

如果我把它放在堆上,我不會收到錯誤。

我不完全知道這是爲什麼;堆棧無法像堆一樣分配儘可能多的內存?我現在這樣做有沒有危險?

謝謝。

+1

什麼是網格數據結構的大小..? – 2013-06-27 16:57:59

+3

請記住,堆棧是有限的內存區域,通常爲1,2或4 MB。 –

回答

4

我不完全知道這是爲什麼;堆棧無法像堆一樣分配儘可能多的內存?

就是這樣。堆棧空間有限。作爲一個經驗法則,如果你有超過幾KB的數據,你應該使用堆。

請參閱:What and where are the stack and heap?