c++ - GCC 如何在堆栈上创建一个数组而不用常量变量给出它的大小?
问题描述
这个例子是如何编译和运行的?
#include <iostream>
int main() {
int input;
std::cin >> input;
int arr[input];
return 0;
}
我的理解是,由于input
在编译期间不知道 ' 的值,它必须是一个堆分配的数组。程序启动时不是为数组(没有在堆上分配)分配了堆栈空间吗?
解决方案
我的理解是,由于在编译时输入的值是未知的,所以它必须是一个堆分配的数组。
你的理解是正确的。
程序启动时不是为数组(没有在堆上分配)分配了堆栈空间吗?
实际上,执行堆栈的内存通常在程序启动时分配。这不是 C++ 语言指定的内容,而是实现细节。
这个例子是如何编译和运行的?
该程序格式不正确。编译器不需要编译程序并且需要诊断问题(如果它不诊断它,那么编译器不符合 C++ 标准)。编译器仍然可以将程序编译为语言扩展。C++ 语言没有指定这是如何发生的。
推荐阅读
- python - 是否有任何硒定位器可以抓取网页的任何内容?
- bash - df -h if freespace 等于 then | 重击
- javascript - 如何将登录页面的页面重定向到服务器端c#中的索引页面?
- google-sheets - 需要将小区绑定到它的邻居
- mysql - 使用 Mysql 数据库在 Node.js 中手动创建用户时出错“TypeError:User.findById 不是函数
- localization - EWS TimeZone 未找到错误 - 本地化问题?
- firebase - 为什么我的 Firestore 规则阻止我获取我的文档?
- javascript - 如何为 Internet Explorer 11 配置编译器选项
- javascript - 如何向 joi.any() 添加验证函数?
- r - 更改 R Dataframe 中的两个值