我读到,虽然动态内存在运行时在堆上分配,但静态内存在编译时在堆栈上分配,因为编译器知道编译时必须分配多少内存。
请考虑以下代码:
int n;
cin>>n;
int a[n];
如果 a[] 的实际大小仅在运行期间读取,编译器如何知道在编译时为 a[] 分配多少内存?
由于您指定的确切原因,您将无法编译它。C++需要有一个固定的数字才能执行编译。如果要执行此操作,则必须使用动态分配。