【发布时间】:2017-06-29 14:29:10
【问题描述】:
请看以下2个节目片段:
int a,b;
cin>>a>>b;
int arr1[a*b];
int arr2[a];
现在,如果我给出输入值 'a' = 100000 和 'b' = 5,我认为由于内存溢出,程序会显示运行时错误。现在看另一段代码:
int arr1[500000];
int arr2[100000];
现在,当我声明与上述代码相同大小的数组时,程序运行正常。为什么会这样?
【问题讨论】:
-
C++ 不支持可变长度数组。
-
@hacks 说了什么。 C 样式数组和
std::array大小必须在编译时知道。你可以使用std::vector或者动态分配一个数组。 -
“我认为由于内存溢出,程序显示运行时错误” - 不要解释错误消息。使用复制和粘贴将其添加到问题中。
标签: c++ arrays variable-length-array