当我尝试创建一个512 x 512的二维数组时,我得到一个异常(ConsoleApplication3.exe中的0x00A916D7处的未处理异常:0xC00000FD:堆栈溢出(参数:0x00000000,0x00752000)。
int main()
{
int a[512][512];
return 0;
}
答案 0 :(得分:3)
Window's default stack size is 1MB,大小为int(4字节)* 512 * 512 = 1MB。
当您声明一个内联数组时,例如行int a[512][512]
,这是使用堆栈完成的。由于堆栈上已经存在一些东西,这就是为什么你在“仅”508x508之后遇到堆栈溢出(正如Mitch指出的那样)(不依赖于那么多!)。
不是在堆栈上分配数组数组,而是使用new
/ malloc
在堆上分配它。根据您正在尝试做的事情,数组可能甚至不是正确的数据结构。