我是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;
}
要捕获的正确类型的异常是什么?
谢谢!
答案 0 :(得分:2)
此代码
int* intArray = new int[10];
...
for(int i = 0;i < 15;i++){
cout << intArray[i] << endl;
}
不会抛出异常。这将导致未定义的行为。最有可能的是,您只需获得随机数据的输出。使用new
运算符创建数组时,会得到一系列具有连续地址的元素。 C ++没有在运行时检查此类数组长度的机制。