
推 purpose:heap corruption 應該是程式有 Bug,寫入到資料時誤寫到 05/23 00:50
→ purpose:像 metadata 這類區域,這跟記憶體不足沒有關係 05/23 00:50
推 purpose:緩衝區溢位是一種可能,寫入的資料超過 malloc 配置的容量 05/23 00:58
→ purpose:當下溢發生時,電腦無法察覺所以你沒機會 catch exception 05/23 00:59
→ purpose:可能性很多,只能自己 google 查 heap corruption how to 05/23 01:00
→ QQ29:想問下,當下無法察覺那為啥delete時才會爆炸 05/23 01:20
→ QQ29:之前發文,觀念是os 會回收你alloc的那區塊,但寫超過觸法exc 05/23 01:24
→ QQ29:eption 倒是很難理解,還是debug版有做手腳 05/23 01:25
推 purpose:delete 時要讀取 metadata 才發現損壞,但何時、何人破壞 05/23 01:29
→ purpose:無法得知。A殺B,B室友C回家發現B死了,此時已非殺人時間 05/23 01:30
→ QQ29:光看這error msg, 是在alloc出問題,是連帶關係嗎 05/23 01:33
→ QQ29:想不透就算之前有寫超過buf,alloc也不該壞啊 05/23 01:34
→ purincess:沒有說是alloc出問題阿 @@ 05/23 02:06
→ stupid0319:按下中斷不是可以用VC看堆疊嗎? 05/23 02:07
推 damody:總之是有code寫到不該寫的地方,所以就不能malloc了 05/23 02:08
推 EdisonX:猜測 : array 存取逾界。 05/23 02:34
→ Favonia:只要一超過 buf 就有超多方法讓整個程式爛掉喔 :P 05/23 06:55
→ QQ29:@@我光看他error msg寫HeapAlloc出錯 就猜是malloc 難道不是? 05/23 18:37
推 littleshan:你搞爛他的metadata導致無法alloc 那他要怎麼報錯? 05/23 18:50
→ littleshan:不可能神通廣大知道你buf越界吧 05/23 18:51
→ littleshan:當然只能跟你說 heap 炸掉了所以沒辦法 alloc 05/23 18:51
推 purpose:你覺得是就已經是了 05/23 19:00
→ james732:看來原po非常堅信是alloc有問題...那就去慢慢找吧 XD 05/23 23:14
→ james732:buff越界確實是最有可能的,為什麼不能接受呢?XD 05/23 23:27
→ QQ29:沒拉 只是我沒他的source code~~ 請問metadata這個詞 05/23 23:50
→ QQ29:是memory上某一個區塊的 專有名詞嗎? 05/23 23:51
→ james732:malloc分配memory給你,除了你需要的空間,它還需要記錄 05/23 23:51
→ james732:一些額外的資訊,譬如這塊記憶體有多長之類的 05/23 23:52
→ james732:這種資訊就叫做metadata,有可能在空間之前, 05/23 23:52
→ james732:如果被破壞,free的時候就會缺乏資訊,導致錯誤 05/23 23:53