【发布时间】:2011-07-19 02:51:56
【问题描述】:
可能重复:
Why can't I create an array with size determined by a global variable?
这是一个大小为4的简单数组的定义,存储在堆栈内存中:
int array[4];
现在,如果我想在堆栈中声明动态大小的数组,我似乎应该编写以下代码:
int n;
cin >> n;
int array[n];
但我们知道这在 C++ 中是不允许的,我们可以编写这个,它将在动态内存(即堆)中创建数组:
int n;
cin >> n;
int *array = new int[n];
但这更慢并且(因为使用了 new 运算符)并且需要在我们完成数组工作后调用 delete [] 运算符。
所以我的问题就在这里:
- 为什么 C++ 不允许您在堆栈内存中创建动态长度数组?
【问题讨论】: