【发布时间】:2019-11-18 04:40:08
【问题描述】:
我遇到了数组问题,当我执行以下代码时,它显示的计数最多为 127:
#include<iostream>
using namespace std;
int main()
{
int x[5];
int z=0;
while(1)
{
x[z]=z;
cout<<x[z];
z++;
}
}
我的问题
- 如果我已经给出了数组“x[5]”的最大索引,那么为什么它在超出限制时不抛出异常。
- 如果超出,则在数组的索引 127 'x[127]' 处停止。
我正在使用带有 TDM-GCC 4.9.2 64 位编译器的 dev-c++。
【问题讨论】:
-
不会抛出任何异常......即使是你也没有捕捉到任何异常......你可以通过抛出:std::out_of_range 来考虑抛出自己的异常。这些仅针对 std 数据结构(即 std::vector 等)抛出
-
C 只是没有隐式边界检查功能。而为什么它停在 127 可能是您的操作系统检测到无效的内存访问。
-
查找数组越界stackoverflow.com/questions/15646973/…的更多信息