#include <iostream>
using namespace std;
class Foo1{
public:
Foo1(){
cout<<"Foo1::Foo1()"<<endl;
throw "构造函数出错";
_id = 2;
}
~Foo1(){
}
void test(){
cout<<"_id:"<<_id<<endl;
}
private:
int _id;
};
int main(){
Foo1* obj;
void* p;
try{
p = malloc(sizeof(Foo1));
if (p == NULL){
throw "内存分配错误!";
}
obj = static_cast<Foo1*>(p);
new(p)Foo1();
}catch(const char* msg){
cout << msg << endl;
free(p);
cout<<"catch end"<<endl;
return 0;
}
obj->test();
return 0;
}
利用placement new处理构造函数异常
最新推荐文章于 2024-07-30 09:59:36 发布
本文探讨了C++中使用new与delete进行内存管理的方法,以及如何通过try-catch块处理异常,包括构造函数抛出异常的情况。通过具体代码示例,展示了如何在内存分配失败或构造函数出错时抛出并捕获异常,确保程序的健壮性和资源的正确释放。
333

被折叠的 条评论
为什么被折叠?



