1

我读到虽然动态内存是在运行时在堆上分配的,但静态内存是在编译时在堆栈上分配的,因为编译器知道在编译时必须分配多少内存。

考虑以下代码:

int n;
cin>>n;
int a[n];

如果仅在运行期间读取其实际大小,编译器如何知道在编译时为 a[] 分配多少内存?

4

1 回答 1

4

由于您指定的确切原因,您将无法编译它。C++ 需要有一个固定的数字才能执行编译。如果你想这样做,你必须使用动态分配。

于 2015-06-15T14:30:06.003 回答