推 os653:我現在是認為單獨處理 new 失敗的情況沒有意義,但是用設置 06/16 03:07
→ os653:new_handler 的方法是可行的,不過要怎麼處理就是問題囉。 06/16 03:08
→ os653:有看過書上預先要一塊備用記憶體,new 失敗的時候在 handler 06/16 03:09
→ os653:釋放,再將重要資訊儲存下來。而我想寫的程式沒有這種重要資 06/16 03:11
→ os653:訊必須儲存,所以我在考慮 new handler 裡面要寫什麼,如果 06/16 03:12
→ os653:什麼都不寫還有機會成功,那是最好,不然的話就直接 exit 也 06/16 03:12
→ os653:可以,只要不要當掉就好囉。現在就差在有沒有機會靠著無限次 06/16 03:16
→ os653:重試那裡,如果真的有機會重新 new 成功的話,我會選擇這個 06/16 03:17
→ os653:方法,不然就跟您說的一樣,直接中斷程式囉。 06/16 03:18
→ yauhh:上面寫的直接中斷程式不是指程式寫中斷程式的敘述,而是... 06/16 03:19
→ yauhh:系統無法提供記憶體,於是強制中斷程式. 06/16 03:20
→ yauhh:我說的方法是:為了避免強制中斷,自己程式先確認可用的記憶體 06/16 03:21
推 os653:您是指 windows 會直接自動把程式關掉?這就真的無解了 ... 06/16 03:52
→ os653:另外可以請問有簡單的 function 可以確認還有多少記憶體嗎? 06/16 04:00
推 os653:好像找到了,看來 GlobalMemoryStatusEx 似乎可以看到的樣子 06/16 04:11
→ aecho:每個process的heap區會有一個限制!?new會吃heap區~~ 06/16 09:44
→ yauhh:是啊,每個process可以挖的記憶體有個限制,processes總共的 06/16 11:23
→ yauhh:記憶體也有個限制. 總數比較簡單,只要衡量實體記憶體可用量 06/16 11:24
→ yauhh:即可. 每個process的上限多少,我還不知道上哪找資訊. 06/16 11:25
推 ledia:msdn 06/16 15:15
→ yauhh:喔,太感謝你這項資訊了 06/16 16:32
推 freelancer:unix : getrlimit, setrlimit 06/16 19:12