1

1,000,000 個の整数の配列を初期化すると、プログラムがクラッシュしますが、キーワード static を前に置くと、すべてが完全に機能します。なぜですか?

int a[1000000] <- crash
static int a[1000000] <- runs correctly
4

3 に答える 3

3

その理由は、最初のものがスタックに割り当てられ、それを収容するのに十分なスタック スペースがないためです。

2 つ目は、データ セグメントに存在します。

質問にタグを付けたので、配列の代わりに[c++]使用することをお勧めします。std::vector

于 2013-08-31T19:08:11.300 に答える
0

変数が静的でない場合、スタックに割り当てられます。~4 MB の配列では、おそらくスタック オーバーフローが発生しています

于 2013-08-31T19:08:29.603 に答える
0

最初はスタックに割り当てられ、おそらくスタックがオーバーフローしました。2 つ目は、プログラムの起動時に割り当てられるグローバル/静的メモリに割り当てられます。

malloc/free または new/delete を使用してヒープに配置することもできますが、成功したことを確認する必要があります。

于 2013-08-31T19:08:55.340 に答える