動的割り当てなしの実行時の配列サイズは許可されますか?

これは C99 で有効です。

C99 標準は、スタック上の可変サイズの配列をサポートしています。おそらく、あなたのコンパイラもこの構造をサポートすることを選択しています.

これは malloc とは異なることに注意してください と new . gcc int array[100] の場合と同様に、配列をスタックに割り当てます スタックポインタを調整するだけです。ヒープ割り当ては行われません。 _alloca によく似ています。 .


これは、VLA (可変長配列) として知られています。これは c99 では標準ですが、gcc では拡張機能として c++ コードで使用できます。コードを拒否したい場合は、-std=standard を試してみてください。 、 -ansi そして -pedantic オプション。


C99 でのみ有効です。次回は、信頼できるコンパイラでコードをチェックしてみてください。