1

512 x 512 の 2D 配列を作成しようとすると、例外が発生します (ConsoleApplication3.exe の 0x00A916D7 で未処理の例外: 0xC00000FD: スタック オーバーフロー (パラメーター: 0x00000000、0x00752000)。

int  main()
{

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

1 に答える 1

3

ウィンドウのデフォルトのスタック サイズは 1MBで、int (4 バイト) * 512 * 512 = 1MB のサイズです。

line などの配列をインラインで宣言するとint a[512][512]、これはスタックを使用して行われます。スタックにはすでにいくつかのものがあるため、「わずか」508x508 (それほど多くに依存しないでください!) の後に (Mitch が指摘したように) スタック オーバーフローが発生します。

配列の配列をスタックに割り当てる代わりに、new/mallocを使用してヒープに割り当てます。何をしようとしているのかによっては、配列が正しいデータ構造ではない場合もあります。

于 2013-09-23T00:32:52.287 に答える