→ nick5130: 你現在上網電腦的記憶體有無限大嗎? 02/10 22:34
→ nick5130: 如果是的話,就不用考慮new失敗 02/10 22:34
→ nick5130: 如果不是的話,你怎麼會覺得不需要考慮new失敗? 02/10 22:35
→ nick5130: new會不會失敗跟作業系統無關,跟你的電腦記憶體有多少 02/10 22:37
→ nick5130: 有關 02/10 22:37
→ nick5130: 有錯請指正 02/10 22:37
→ os653: 我以為邏輯記憶體沒爆的話,記憶體不夠會拿硬碟當記憶體用 02/10 22:45
→ MOONRAKER: 沒事不會讓你用到完的啦 02/10 22:48
→ LiloHuang: C++ constructor 是可以主動丟 exception 的 02/10 23:34
推 shadow0326: 你可以試試看用到開始swap硬碟當記憶體 程式效能如何 02/10 23:36
→ LiloHuang: new 失敗未必是記憶體不足,還是得處理其它的錯誤。 02/10 23:37
→ CodingMan: 拿硬碟是虛擬記憶體的設定,也不是無限大啊 02/11 00:41
→ Caesar08: 那你硬碟也爆了要怎麼辦? 02/11 00:43
推 laladeer: 用硬碟當記憶體是一個悲劇的開始 02/11 00:55
推 EdisonX: x64 os還是要處理,就算你覺得mem用不完,那也是你現在 02/11 04:35
→ EdisonX: 的情況,有些starter os支援有memory 根本不到16g,就算 02/11 04:35
→ EdisonX: 有好了,實際插16g,這個大小在很多領域都很容易爆,像是 02/11 04:35
→ EdisonX: 影像處理。 02/11 04:35
→ os653: 用到硬碟爆掉,那也沒辦法處理了,直接crash也是可接受的事 02/11 09:29
→ os653: 何況我用到爆記憶體開始用硬碟的時候,那龜速根本無法忍耐 02/11 09:30
→ os653: 倒是使用的library有可能因為別的因素new失敗這點沒考慮到 02/11 09:33
→ CodingMan: 反正判斷一下就不會出錯,你沒判斷出錯了怎麼辦?沒有 02/11 10:05
→ CodingMan: 東西是無限的 02/11 10:05
推 boss0405: 同意樓上,也養成好習慣,沒養成好習慣,要是寫embedded 02/11 10:26
→ boss0405: system的code會很慘 02/11 10:26
推 ronin728: 我的筆電就沒有開虛擬磁碟,因為太消耗,瀏覽器分頁開太 02/11 15:22
→ ronin728: 多就滿出來了 02/11 15:22
推 EdisonX: mem不夠crash沒關系?試想一下早期word裡,用到一半crash 02/12 00:48
→ EdisonX: 有誰可接受。 02/12 00:48
噓 Vdragon: 先確定當前運作的 process 的資料分頁能被系統 swap 到硬 02/12 09:57
→ Vdragon: 碟再說吧 02/12 09:57
→ CodingMan: 怎麼聽起來判斷一下會要你的命一樣XDDD 02/12 13:32
→ os653: 寫判斷code會多很多,而且也不知道到底怎麼寫比較正確 02/12 15:47
→ os653: 到真的爆記憶體的時候,還能夠開檔案寫入錯誤訊息嗎? 02/12 15:49
→ ronin728: IO與記憶體管理有滿天 assert , catch 是很正常的 02/14 10:42
→ Killercat: 你要確認你的東西不會被ulimit卡... 並不是所有linux 02/14 11:54
→ Killercat: app都可以用無限資源去跑的 02/14 11:54
推 TobyH4cker: 之前筆電只有8GB開Chrome也是crash 02/14 18:30
→ ruthertw: 看ㄧ下8086架構的定址方法 02/14 21:53
推 brandyjohn: 好奇要怎麼對記憶體不夠作錯誤處理?有大大可以分享嗎? 02/15 23:45
→ Killercat: More Effective C++, Item 8 02/16 12:53
→ Killercat: 真的要提怎麼針對記憶體new不出來可以寫成一整本書了 02/16 12:54
→ Killercat: 有handler處理(C/C++) 有try-catch bad-alloc(C++) 02/16 12:55
→ Killercat: 也有自己做memory management(STL) 02/16 12:55
→ Killercat: 不過以C++來講 比較通用的方法是抓bad-alloc 02/16 12:55
→ Killercat: 自己做子系統的話 通常是placement new/delete 02/16 12:56
→ Killercat: C場合似乎唯一的解法就是handler了 02/16 12:57