用于访问内存中不存在的数组索引的正确异常类型?

时间:2015-06-06 15:08:14

标签: c++ exception exception-handling

我是C ++异常的新手,我无法为不良的内存访问尝试找到正确的异常类型。

假设我使用以下代码为10个整数分配了内存:

int* intArray = new int[10];

for(int i = 0;i < 10;i++){
    intArray[i] = i+1;
}

在尝试阅读时,我犯了一些逻辑错误,导致程序访问我没有分配的内存,例如:

for(int i = 0;i < 15;i++){
    cout << intArray[i] << endl;
}

要捕获的正确类型的异常是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

此代码

int* intArray = new int[10];
...    
for(int i = 0;i < 15;i++){
    cout << intArray[i] << endl;
}

不会抛出异常。这将导致未定义的行为。最有可能的是,您只需获得随机数据的输出。使用new运算符创建数组时,会得到一系列具有连续地址的元素。 C ++没有在运行时检查此类数组长度的机制。