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