1.使用set_new_handler
void nomemery()
std::set_new_handler(nomemery);
注意:std和檔案中都含有set_new_handler函式。測試中發現兩set_new_handler都重寫或者只重寫其中乙個都可以解決問題。
個人見解:使用std::set_new_handler
2.使用std::nothrow
while (true)
else
sleep(500);
}個人見解:不建議使用。
3.使用try...catch
while (true)
catch (const std::exception&)
if (nullptr == p)
else
sleep(500);
}
new記憶體失敗後的正確處理
應該有很多的程式設計師對比爾蓋茨的這句話有所耳聞 對於任何乙個人而言,640kb應當是足夠的了。640k ought to be enough for everybody.不幸的是,偉大的比爾蓋茨也失言了。隨著硬體水平的發展,記憶體變得越來越大,但是似乎仍不能滿足人們對記憶體日益增長的需求。所以呢,...
C 學習筆記 new失敗後的處理
眾所周知,c 中使用new關鍵字申請記憶體成功時會返回申請的記憶體起始位址,並在該位址上呼叫建構函式。那麼,有考慮過失敗的情況嗎?int p int malloc 10000000000000000000 if null p else int p new 10000000000000000000 i...
new和malloc申請記憶體失敗後的處理
1.c 標準 new 失敗是丟擲異常的,visual c 6.0中返回乙個null指標.使用new std nothrow 可以保證失敗時返回null 因此完全可以 define new new std nothrow 2.使用 malloc calloc 等分配記憶體的函式時,一定要檢查其返回值是...