我的理解是,为了在堆栈上为变量分配内存,编译器需要在编译期间知道它的大小。在可变长度数组的情况下,由于编译器无法计算出大小,我认为内存在运行时分配在堆中。我打印了地址以确认这一点 -
int main(){
int n;
cin>>n;
int A[n];
cout<< &n << " "<< A <<endl;
}
输出
0x7ffc663c9b2c 0x7ffc663c9ae0
它们彼此接近=&gt; A在堆栈上。编译器如何知道在编译时分配给数组A的大小是什么?