亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

想問下大家一般都怎么處理new返回空的這個問題?

想問下大家一般都怎么處理new返回空的這個問題?

C++
繁星點點滴滴 2023-04-06 19:15:44
開發環境 VS2008想問下如果new的時候內存不夠是是會返回NULL呢還是會直接拋出異常因為延續以前寫C的習慣,malloc完了以后檢查返回值,為空怎么處理,不為空怎么處理這樣每個new的位置都會多出一堆代碼最近看到貌似默認的new是直接拋出異常的?如果不希望拋出異常是用new(nothrow)那正常情況下應該不需要處理new的返回啦?捕獲這個異常然后提示內存不足把程序退出就可以了?那么這個捕獲放哪?把整個程序都放在try里面?會不會影響程序效率?
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

異常在不發生的時候,是幾乎沒有額外代價的,而且像內存用盡這樣的異常,本來就是應該在應用程序最高層處理的,因為除了這樣,也沒別的什么事情好做。
總之,在整個應用程序最高層處理 bad_alloc 這樣的異常,遠遠好于每次去檢查 new 的結果是否為真。

查看完整回答
反對 回復 2023-04-10
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

在進程空間沒有足夠大的連續內存塊時,new會默認調用new_handler拋出異常。如果你要改,可以通過注冊set_new_handler這個回調函數。

我覺得這是個異常,所以還是要捕捉的,就捕捉new就可以了。如果你覺得每次都寫代碼麻煩,就自己包裝一下


查看完整回答
反對 回復 2023-04-10
  • 2 回答
  • 0 關注
  • 190 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號