2
  int x;
    cin>>x;
    int arr[x];

プログラムはスタック上の配列に未知のメモリを割り当てようとするため、コードをコンパイルしてはなりませんが、コンパイルされます! 私は動的メモリが何であるかを知っています.私はこれについてたくさん読んだことがありますが、理解できません.なぜ上記のプログラムが実行されるのですか?! このままでいいのではないか?:

int x;
cin>>x;
int *arr=new arr[x];

静的割り当てでは機能せず、動的割り当てでのみ機能する例を教えてください。

4

1 に答える 1

4

一部のコンパイラでは、スタックから割り当てられた配列に動的サイズを使用できる場合があります。ただし、標準の C++ ではありません。

于 2014-08-11T01:57:47.277 に答える