new(std::nothrow) 顧名思義,即不拋出異常,當new一個對象失敗時,默認設置該對象為NULL,這樣可以方便的通過if(p == NULL) 來判斷new操作是否成功
普通的new操作,如果分配內存失敗則會拋出異常,雖然后面一般也會寫上if(p == NULL) 但是實際上是自欺欺人,因為如果分配成功,p肯定不為NULL;而如果分配失敗,則程序會拋出異常,if語句根本執行不到。
因此,建議在c++代碼中,凡是涉及到new操作,都采用new(std::nothrow),然后if(p==NULL)的方式進行判斷
rec = new (std::nothrow) ClassA();
if (NULL == rec) {
}