1,000,000 個の整数の配列を初期化すると、プログラムがクラッシュしますが、キーワード static を前に置くと、すべてが完全に機能します。なぜですか?
int a[1000000] <- crash
static int a[1000000] <- runs correctly
その理由は、最初のものがスタックに割り当てられ、それを収容するのに十分なスタック スペースがないためです。
2 つ目は、データ セグメントに存在します。
質問にタグを付けたので、配列の代わりに[c++]
使用することをお勧めします。std::vector
変数が静的でない場合、スタックに割り当てられます。~4 MB の配列では、おそらくスタック オーバーフローが発生しています
最初はスタックに割り当てられ、おそらくスタックがオーバーフローしました。2 つ目は、プログラムの起動時に割り当てられるグローバル/静的メモリに割り当てられます。
malloc/free または new/delete を使用してヒープに配置することもできますが、成功したことを確認する必要があります。