new在C++建立对象时可能引发异常,对这个异常怎样处理?class class1
{
};class1* c(NULL);
c=new class1();//这里???
1:给new加上try...catch或在调用的上级中加上try...catch?
2:重定义new操作符,以便在不成功时返回空?
3:给类class1定义void* operator new(size_t sz)?
4:设置 _set_new_handler,释放可用内存或直接报错?
5:改用malloc?
6:看情况综合以上?
6:还有其它高见?参见:http://topic.csdn.net/u/20110304/16/ed75dcde-7670-4da9-92fb-2f283aba66d8.html?10192135
{
};class1* c(NULL);
c=new class1();//这里???
1:给new加上try...catch或在调用的上级中加上try...catch?
2:重定义new操作符,以便在不成功时返回空?
3:给类class1定义void* operator new(size_t sz)?
4:设置 _set_new_handler,释放可用内存或直接报错?
5:改用malloc?
6:看情况综合以上?
6:还有其它高见?参见:http://topic.csdn.net/u/20110304/16/ed75dcde-7670-4da9-92fb-2f283aba66d8.html?10192135
我就不挵斧了
可以用malloc只申请空间
如果需要,换个好的设计,如内存池之类的
class class1
{
};
class1* c(NULL);
c=new class1();// 这里?
if (c==NULL)
{
//不成功!return之类的处理。
}
如果构造失败,那么就try catch等来捕获吧,具体情况需要自己分析,如果觉得应用场合可能出现这种问题概率很大,那就自己捕获等来处理吧
{
};class1* c(NULL);
c=new (nothrow)class1();//这里???if(c == NULL)
{
内存不够
}其实,这个问题值得深究,很多写过好多年代码的人,未必了解,不是做技术的好态度啊啊啊啊啊