1. 程式人生 > >記憶體分配失敗錯誤處理

記憶體分配失敗錯誤處理

二、C++中的new操作符:
C++中的new操作符在分配記憶體失敗時預設的操作是丟擲一個內建的異常,而並不是直接返回空指標;這樣的話,再把返回值與空指標比較,就沒有什麼意義了;因為,C++丟擲異常之後,就直接跳出new操作符所在的那一行程式碼,而不再執行後續的程式碼行了,所以,對new操作符返回值的判斷程式碼就執行不到了;當然,標準C++也提供了抑制丟擲異常的方法,使之不再排除記憶體分配失敗的異常,轉而直接返回空指標,這是因為比較古老的編譯器裡面可能沒有異常處理機制,不能捕獲到異常;如:
int* p = new int[SIZE];
if(p == 0) //檢查p是否是空指標;這個判斷沒有意義;
{
 return -1;
}