c++ - 为什么在 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 个整数)?
有人可以向我解释一下,包括技术细节吗?
解决方案
推荐阅读
- php - PHP 代码在终端中运行,但在 chrome 中无法运行
- php - php类的多功能getter
- excel - 在 Excel 中以编程方式为 csv 文件添加缺少的双引号
- angular - 在 IE 浏览器中,Uncaught (in promise): Error: Loading chunk modulename-module failed
- php - php artisan schedul:run 的 Laravel 5.8 cron 作业
- php - 按特定顺序对多维数组进行排序
- jmeter - 在查询字符串参数中发送空值
- javascript - 如何使用 jquery 发出 POST 请求并在 django 视图(不是通用视图)中访问 POST 数据,而不使用 csrf 令牌?
- oracle - Sqoop --escaped-by --optional-enclosed-by
- sysbench - 如何改变sysbench oltp_read_write脚本的读写比率