C ++で、実行スレッドが遭遇することのないローカル変数宣言にスタックスペースが割り当てられるのはなぜですか?または、C ++標準で定義されていない場合、特定のコンパイラが実行スレッドで検出されないローカル変数宣言にスタックスペースを割り当てるのはなぜですか?コンパイラーは、実行スレッドが検出した変数宣言にのみスタックスペースを割り当てても機能しますか?
たとえば、変数charが検出されないデバッグモードでこの関数を呼び出すと、スタックオーバーフローが発生します。
void f()
{
if (false)
{
char chars[INT_MAX];
}
}