3

私は学校でコンピュータサイエンスのクラスを受講しましたが、先生は動的メモリ割り当てとその理由について話していました。

cin>>size;
int array[size]; // According to him this should result in a compiler error

これは機能しないはずであり、代わりに次のものを使用することになっています。

int *p, size;
cin>>size;
p = new int[size]
...
delete[] p;

私の質問は、そのような動的配列を宣言できない場合、なぜ最初の例が機能するのかということです。

更新:すべてのテストはGNU GCC Complilerで行われ、上記のコードはmain関数内にあります

4

1 に答える 1

7

可変長配列をサポートする非標準のコンパイラを使用しています。あなたの教授は正しいです、int array[size]コンパイルすべきではありません。

あなたの教授も違うを使用するように指示しますp = new int[size]。彼がすべきことは、あなたに を使うように言うことですstd::vector<int> p(size)。(わかりました、教育目的ではこれで問題ありません):)

于 2012-10-22T20:16:41.500 に答える