看板 C_and_CPP 關於我們 聯絡資訊
為了模擬實驗,希望能把模擬裡所有的case列出,所以選擇了建樹的方式 而我是用遞迴把這個樹建出來,每個節點都有2~3個子節點 我電腦是4GB的記憶體,跑程式時是3GB,前面2GB掉得極快,簡直是每秒掉200~300MB 掉到剩800MB時,吃記憶體的速度變得很緩慢,變成每秒掉20~30MB的速度 然後記憶體剩700MB左右,系統會出現錯誤警告,並且把我的程式終止掉 警告內容是:"0x????????"指令參考的"0x00000010"記憶體。該記憶體不能為written。 我在想,一個正常的失控遞迴應該會把記憶體全吃光 然後系統會通知類似"虛擬記憶體不足"的訊息嗎? 如今,卻是記憶體還有剩,卻出現錯誤被系統終結 請問這是正常的,還是我的程式有BUG存在,導致程式跑到最後垮掉? 又如果是正常的,請問有人可以稍微解釋一下原因嗎? (怎麼沒把記憶體全吃光) 真的萬分感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.22.18.83
windincloud:系統機制會不允許吧~ 因為系統也要資源 10/15 10:27
windincloud:再來有可能是系統沒法要到他要的空間 要不要用assert 10/15 10:30
windincloud:檢查一下空間NEW的狀態? 10/15 10:30
Ebergies:光你印排列組合不可能把記憶體用完的吧 10/15 10:31
Ebergies:問題應該出在你實作的方法 10/15 10:31
VictorTom:你的作業系統是?? 32bit XP?? 如果沒改boot.ini, 一般 10/15 10:33
VictorTom:使用者AP最多只有2GB定址空間, 用超過2G不就死掉了@_@" 10/15 10:33
VictorTom:另外, OS的確不會等你把resource全用光才終止你, 不然 10/15 10:34
VictorTom:它自己也沒resource可以運作了XD 10/15 10:34
liwmewmew:原來最多只有2GB可以用@@",我是32bit XP 10/15 10:36
liwmewmew:所以能用到虛擬記憶體不足的,是因為可用記憶體不到2GB 10/15 10:37
liwmewmew:這樣也許可解釋為何有時被終止,有時是虛擬記憶體不足 10/15 10:38
VictorTom:我的印象是這樣, 因為User可以用的Virtual Address 10/15 10:38
liwmewmew:剛剛我統計了一下,我的樹在爆掉前,建了1千600萬個node 10/15 10:38
VictorTom:Space只有2GB(預設). 至於是不是記憶體不足, 你在動態 10/15 10:39
VictorTom:配置後都有確實檢查指標有沒有分配記憶體成功嗎@_@" 10/15 10:39
VictorTom:其實小弟也一直很好奇那種可以吃好幾GB mem的軟體, 像 10/15 10:40
VictorTom:PhotoShop還是其他影音編輯軟體, 是怎麼用到這麼大的Orz 10/15 10:41
liwmewmew:我也很好奇,有些軟體可以吃超過2GB的= = 10/15 10:45
Ebergies:影音編輯軟體光要把要編的資料放進 memory 就差不多了 10/15 10:45
Ebergies:他們多半已經有用很多 tip 改善這類問題了 10/15 10:46
liwmewmew:我研究一下assert怎麼使用,謝謝各位大大!! 10/15 11:16
Lwms:試試看 屬性->連結器->系統->啟用大型記憶體 10/16 03:21