首页 > 解决方案 > myArray[N] 其中 N = 1,000,000 返回错误,而 myArray[1,000,000] 不返回

问题描述

文件扩展名:.cpp

我有以下代码:

int main() {
    int N; cin >> N;
    int myArray[N];
    return 0;
}

如果我将 N 输入为 1,000,000,则在尝试运行该程序时会出现错误。但是,当我设置myArray[N]为时myArray[1000000],它没有。为什么会这样?

标签: c++variable-length-array

解决方案


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


推荐阅读