您好,匿名用户
随意问技术百科期待您的加入

C++ new 返回空的处理

0 投票

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

用户头像 提问 2012年 12月1日 @ Brand 上等兵 (185 威望)
分享到:

1个回答

0 投票

在进程空间没有足够大的连续内存块时,new会默认调用new_handler抛出异常。如果你要改,可以通过注册set_new_handler这个回调函数。

我觉得这是个异常,所以还是要捕捉的,就捕捉new就可以了。如果你觉得每次都写代码麻烦,就自己包装一下

用户头像 回复 2012年 12月1日 @ Caitlyn 上等兵 (452 威望)
提一个问题:

相关问题

0 投票
1 回复 48 阅读
用户头像 提问 2012年 12月1日 @ Aries 上等兵 (238 威望)
0 投票
1 回复 53 阅读
0 投票
0 回复 9 阅读
用户头像 提问 2014年 3月7日 @ Rammus 上等兵 (334 威望)
0 投票
1 回复 34 阅读
0 投票
1 回复 42 阅读
用户头像 提问 2013年 10月27日 @ Corki 上等兵 (263 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...