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 回答