我想知道,什麼是處理內存不足錯誤的好做法。處理內存不足錯誤的最佳做法是什麼?
void SomeTask()
{
try
{
SomeObj obj = new SomeObj();
}
catch(std::bad_alloc&)
{
// What should be done here?
}
// ... more code ...
}
我覺得自己默默地返回是錯誤的,因爲程序可能運行在一個不確定的狀態。那麼,這裏應該發生什麼,我應該離開程序崩潰,還是有更好的選擇?該程序作爲服務運行,所以我不能只彈出錯誤消息。我想如果有足夠的內存來做這件事,可能會記錄一些東西。但是,我只是想知道,在這種情況下,你認爲我應該怎麼做?
謝謝。
首先,不要測試null。抓住'std :: bad_alloc'。 – 2010-12-20 17:13:10
好的,謝謝,明白了。 – 2010-12-20 17:20:06
其次,除非你能解決它,否則不要捕獲bad_alloc。這在分配點幾乎沒有任何地方。如果這是由主事件循環啓動的某種服務,則允許該服務退出並一直回退到事件循環。如果這是普通應用程序流程的一部分,那麼通常的結果就是讓拋出導致應用程序終止。捕獲並記錄main()中的所有異常,然後重新拋出異常。 – 2010-12-20 18:27:46