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