512 x 512 の 2D 配列を作成しようとすると、例外が発生します (ConsoleApplication3.exe の 0x00A916D7 で未処理の例外: 0xC00000FD: スタック オーバーフロー (パラメーター: 0x00000000、0x00752000)。
int main()
{
int a[512][512];
return 0;
}
512 x 512 の 2D 配列を作成しようとすると、例外が発生します (ConsoleApplication3.exe の 0x00A916D7 で未処理の例外: 0xC00000FD: スタック オーバーフロー (パラメーター: 0x00000000、0x00752000)。
int main()
{
int a[512][512];
return 0;
}
ウィンドウのデフォルトのスタック サイズは 1MBで、int (4 バイト) * 512 * 512 = 1MB のサイズです。
line などの配列をインラインで宣言するとint a[512][512]
、これはスタックを使用して行われます。スタックにはすでにいくつかのものがあるため、「わずか」508x508 (それほど多くに依存しないでください!) の後に (Mitch が指摘したように) スタック オーバーフローが発生します。
配列の配列をスタックに割り当てる代わりに、new
/malloc
を使用してヒープに割り当てます。何をしようとしているのかによっては、配列が正しいデータ構造ではない場合もあります。