【发布时间】:2012-02-13 16:43:50
【问题描述】:
我试图捕获bad_alloc 异常以证明使用了析构函数。
这是我的对象:
#include "Obj.h"
#include<iostream>
using namespace std;
Obj::Obj() {
d = new double[200000000];
}
Obj::~Obj() {
cout << "destroyed \n";
}
以及主要方法:
#include "Obj.h"
#include <iostream>
using namespace std;
int main(){
Obj* ptr[1000000];
try{
for(int i=0; i<1000; i++){
ptr[i] = new Obj();
}
} catch(bad_alloc){
cout<<"EXCEPTION";
}
}
我的程序没有捕获异常,而是停止并尝试在线寻找解决方案(Windows)。 为什么会这样?
编辑 我现在得到了异常,但我应该证明在抛出异常之前使用了析构函数。我该怎么做?
【问题讨论】:
-
在线解决方案?那是什么?
-
我猜是在 Visual Studio 中在线命名的解决方案。
-
@VJovic:在 Windows 上,当程序导致 Windows 能够检测到的某些类别的错误时,会弹出一个对话框,询问您是否希望 Windows 在线寻找解决方案(可能程序有错误并且有一个已知的修复方法)。
-
Obj析构函数永远不会被这个程序调用。 -
@BenjaminLindley 感谢您解释我的意思。