Re: [問題] 有需要檢查 new 失敗的情形嗎?
※ 引述《os653 (allstar)》之銘言:
: 想請問
: new 失敗的原因是什麼?
: 我的猜想是
: 每個程式在執行時由系統配置了一塊虛擬出來的記憶體
: 如果這塊虛擬記憶體上沒有足夠的連續空間供 new 使用
: new 就會失敗
...
: 請問實際情況是哪個呢?
曾做過一個很小的測試將記憶體盡可能吸乾,同時觀察系統資源,
得到的概念是:
實體記憶體用完了會有虛擬記憶體頂,直到系統提供不了更多虛擬記憶體.
能使用的虛擬記憶體,與系統可使用的 page file 大小有關;
當然 page file 也跟實體記憶體有關.
測試系統是 Windows.
而記憶體快要不夠的時候,任何一個程式差不多都一樣難以行動.
所以,似乎不必管有沒有辦法 new 成功.
假如沒辦法 new 成功,當然是得到系統記憶體不足的訊息並且直接中斷程式了.
不用忙著做記憶體防呆; 如果要做,就先讀出系統記憶體有多少可用,
衡量夠不夠自己程式使用,如果不夠就做適當的反應,例如回報失敗訊息.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.229.146
※ 編輯: yauhh 來自: 59.112.229.146 (06/16 02:18)
推
06/16 03:07, , 1F
06/16 03:07, 1F
→
06/16 03:08, , 2F
06/16 03:08, 2F
→
06/16 03:09, , 3F
06/16 03:09, 3F
→
06/16 03:11, , 4F
06/16 03:11, 4F
→
06/16 03:12, , 5F
06/16 03:12, 5F
→
06/16 03:12, , 6F
06/16 03:12, 6F
→
06/16 03:16, , 7F
06/16 03:16, 7F
→
06/16 03:17, , 8F
06/16 03:17, 8F
→
06/16 03:18, , 9F
06/16 03:18, 9F
→
06/16 03:19, , 10F
06/16 03:19, 10F
→
06/16 03:20, , 11F
06/16 03:20, 11F
→
06/16 03:21, , 12F
06/16 03:21, 12F
推
06/16 03:52, , 13F
06/16 03:52, 13F
→
06/16 04:00, , 14F
06/16 04:00, 14F
推
06/16 04:11, , 15F
06/16 04:11, 15F
→
06/16 09:44, , 16F
06/16 09:44, 16F
→
06/16 11:23, , 17F
06/16 11:23, 17F
→
06/16 11:24, , 18F
06/16 11:24, 18F
→
06/16 11:25, , 19F
06/16 11:25, 19F
推
06/16 15:15, , 20F
06/16 15:15, 20F
→
06/16 15:15, , 21F
06/16 15:15, 21F
→
06/16 16:32, , 22F
06/16 16:32, 22F
推
06/16 19:12, , 23F
06/16 19:12, 23F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章