首页 > 解决方案 > 为什么在 C++ 中禁止使用可变数组长度,尽管在声明后没有更改它?

问题描述

假设我们有 2 个代码示例,A 和 B:
A。

int n;
cin>>n;
//n is read as 2483
//n never changes beyond this point
int a[n];
for(int i=0; i<n; i++)
cin>>a[i];

B.

int n;
cin>>n;
//n is read as 2483
//n never changes beyond this point
int a[10000];
for(int i=0; i<n; i++)
cin>>a[i];

为什么 A 被 ISO“禁止”,尽管尝试根据当前需求节省内存,而 B 是首选,即使它浪费了一些内存(例如,为 10000 个整数分配内存而不是所需的,比如 2483 个整数)?
有人可以向我解释一下,包括技术细节吗?

标签: c++iso

解决方案


推荐阅读