2013-06-27 63 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?