为什么我不能在vc 2012中创建一个大于508乘508的二维数组

时间:2013-09-23 00:25:46

标签: arrays visual-c++

当我尝试创建一个512 x 512的二维数组时,我得到一个异常(ConsoleApplication3.exe中的0x00A916D7处的未处理异常:0xC00000FD:堆栈溢出(参数:0x00000000,0x00752000)。

int  main()
{

int a[512][512];
return 0;
}

1 个答案:

答案 0 :(得分:3)

Window's default stack size is 1MB,大小为int(4字节)* 512 * 512 = 1MB。

当您声明一个内联数组时,例如行int a[512][512],这是使用堆栈完成的。由于堆栈上已经存在一些东西,这就是为什么你在“仅”508x508之后遇到堆栈溢出(正如Mitch指出的那样)(不依赖于那么多!)。

不是在堆栈上分配数组数组,而是使用new / malloc在堆上分配它。根据您正在尝试做的事情,数组可能甚至不是正确的数据结构。