new失敗時的處理

2021-10-05 21:37:09 字數 443 閱讀 1495

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 等分配記憶體的函式時,一定要檢查其返回值是...