new && new(std::nothrow)

偶然看到 cocos2d-x 中 帶有 new (std::nothrow) XX;

所以就百度了下 


發現了這個文章  轉載地址:http://blog.sina.com.cn/s/blog_65d204330101do6r.html 



源碼方面的信息就不詳細講述了,找找代碼看看便知,簡要說明下:
new(std::nothrow) 顧名思義,即不拋出異常,當new一個對象失敗時,默認設置該對象爲NULL,這樣可以方便的通過if(p == NULL) 來判斷new操作是否成功
普通的new操作,如果分配內存失敗則會拋出異常,雖然後面一般也會寫上if(p == NULL) 但是實際上是自欺欺人,因爲如果分配成功,p肯定不爲NULL;而如果分配失敗,則程序會拋出異常,if語句根本執行不到。

因此,建議在c++代碼中,凡是涉及到new操作,都採用new(std::nothrow),然後if(p==NULL)的方式進行判斷

發佈了17 篇原創文章 · 獲贊 63 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章