首页 > 开发 > C++ > 正文

C++ new 返回空的处理

2017-09-11 21:35:58  来源: 网友分享

开发环境 VS2008
想问下如果new的时候内存不够是是会返回NULL呢还是会直接抛出异常
因为延续以前写C的习惯,malloc完了以后检查返回值,为空怎么处理,不为空怎么处理
这样每个new的位置都会多出一堆代码
最近看到貌似默认的new是直接抛出异常的?如果不希望抛出异常是用new(nothrow)
那正常情况下应该不需要处理new的返回啦?捕获这个异常然后提示内存不足把程序退出就可以了?
那么这个捕获放哪?把整个程序都放在try里面?会不会影响程序效率?
想问下大家一般都怎么处理这个问题的。

解决方案

异常在不发生的时候,是几乎没有额外代价的,而且像内存用尽这样的异常,本来就是应该在应用程序最高层处理的,因为除了这样,也没别的什么事情好做。
总之,在整个应用程序最高层处理 bad_alloc 这样的异常,远远好于每次去检查 new 的结果是否为真。