簡體   English   中英

每當動態分配內存時,您是否總是必須檢查bad_alloc?

[英]Do you always must check for bad_alloc whenever dynamically allocating memory?

如果new找不到足夠的內存,則拋出異常。 我絕對需要檢查嗎? 我從來沒有這樣做,沒有任何問題,但現在我已經讀過你應該這樣做了。 或者僅在某些情況下?

try
{
    pPos = new Vector2D(5,1);
}
catch(bad_alloc)
{
    // NO MEMORY!
}

bad_alloc沒有什么特別之處,您可以像其他任何異常一樣捕獲它。 抓住它是不尋常的 如果你有某種方法可以從內存不足狀態中恢復,那么你只能這樣做。 但我認為旨在處理內存不足錯誤的程序更常用的是newnothrow版本:

pPos = new (std::nothrow) Vector2D(5,1);
if (!pPos) {
    // NO MEMORY!
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM