Re: [問題] 有需要檢查 new 失敗的情形嗎?
想請問
new 失敗的原因是什麼?
我的猜想是
每個程式在執行時由系統配置了一塊虛擬出來的記憶體
如果這塊虛擬記憶體上沒有足夠的連續空間供 new 使用
new 就會失敗
如果程式本身不釋放記憶體的話
就算重複 new 也永遠不會成功
不知道這樣的解釋對嗎?
如果這樣的解釋正確的話
那在多執行緒下
是多個執行緒共有一塊虛擬記憶體
還是各有自己的一塊虛擬記憶體呢?
會問這個問題,是在想設一個不做事的 new handler 有沒有意義
如果跟我想的一樣的話
設置一個不做事的 new handler 跟 while (true) 其實是一樣的意思
只會導致程式沒有回應
如果跟我想的不一樣的話
設置一個不做事的 new handler 會導致 new 不斷重試
直到有其他程式釋放出記憶體供這個程式使用
那就可以當做 new 不會失敗
請問實際情況是哪個呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.61.38
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 4 之 5 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章