为什么在C ++中使用可变长度数组是一个坏主意?

Chi*_*ter -4 c++ language-lawyer

为什么在C ++中使用可变长度数组是一个坏主意?

因此,例如,此代码:

int i = 0;
std::cin >> i;

int array[i]; // bad?
Run Code Online (Sandbox Code Playgroud)

编辑:这不是重复项,因为重复项询问标准为何选择不将其放入的原因。此问题询问可变长度数组违反了哪些标准规则。

R S*_*ahu 7

某些编译器支持扩展长度数组。它们不是标准的C ++。使用VLA会使代码不可移植。

更好的替代方法是使用std::vector

int i = 0;
std::cin >> i;

std::vector<int> array(i);
Run Code Online (Sandbox Code Playgroud)