【发布时间】:2019-07-28 05:48:42
【问题描述】:
为什么在 C++ 中使用可变长度数组是个坏主意?
所以,例如,这段代码:
int i = 0;
std::cin >> i;
int array[i]; // bad?
编辑:这不是重复,因为重复询问标准选择不将它们放入的原因。这个问题询问可变长度数组违反了哪些标准规则。
【问题讨论】:
-
注意:这是为无数提问者提供的资源问题,他们无意中将上述示例中的内容放入其代码中。因此,我已经尽我所能回答了这个问题。请随时添加比我更好的答案。
-
Re:“这个问题解释了可变长度数组违反了哪些标准规则”:问题不是“解释”事物,而是“询问”事物;这个问题不询问 VLA 违反了哪些标准规则。相反,它只是询问我们为什么不应该使用它们,one 答案(你的)通过列出标准的相关部分来回答问题。 (也就是说,我同意这个问题并不完全是对那个问题的欺骗;这个问题比这个问题更具体。)
-
C++,从 C11 开始,可变长度数组是实现定义的特性:C11 Standard - 6.10.8.3 Conditional feature macros "
__STDC_NO_VLA__整数常量 1,意在表明实现不支持可变长度数组或可变修改的类型。" -
@DavidC.Rankin VLA 在 C++ 中从不。
标签: c++ language-lawyer