void method(string a) {
int n = a.size();
int array[n];
}
上記のコードは、gcc を使用して正しくコンパイルできます。配列のサイズは、どのようにして非定数変数から取得できますか? コンパイラは自動的に を に変換int array[n]
しint* array = new int[n]
ますか?
配列のサイズは、どのようにして非定数変数から取得できますか?
現在、そのコンパイラには非標準の拡張機能があり、C++ プログラムで C の可変長配列を使用できるようになっているためです。
コンパイラは自動的に を に変換
int array[n]
しint* array = new int[n]
ますか?
それは実装の詳細です。通常の自動変数のように、GCC はそれをスタックに配置すると思います。スタックに対してサイズが大きすぎる場合、動的割り当てを使用する場合と使用しない場合があります。私は自分自身を知りません。
動的割り当て。new
キーワードは、ポインターといくつかの割り当てを使用してこれを行います。
int * ptr;
int n = a.size();
ptr = new int[n];