myArray [N],其中N = 1,000,000会返回错误,而myArray [1,000,000]则不会

Ric*_*ard 2 c++ variable-length-array

文件扩展名:.cpp

我有以下代码:

int main() {
    int N; cin >> N;
    int myArray[N];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我输入N为1,000,000,那么当我尝试运行该程序时,我会收到错误.但是,当我设置myArray[N]myArray[1000000],它没有.为什么会这样?

小智 6

int myArray[N];在C++中无效.这种行为是在C99中引入的,但从未在C++中引入,可能是因为它导致很多丑陋的东西在幕后发生以使其工作,并且它会使生成的代码效率降低.事实上,这个功能在C11中甚至可以逆转,其支持仅仅是可选的,不再是强制性的.请std::vector<int>改用,或使用您选择的任何类似标准容器.