看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《NOtWorThy (駭客技術去哪學?)》之銘言: : (還是等我把.exe黨刪掉就不會佔空間呢?) 呣,你可以省掉的應該是硬碟空間XD : 推 VictorTom:不好意思借問一下, 如果程式離開後沒有free也會被釋放掉 03/12 19:41 : → VictorTom:那一般memory leak是怎麼發生的??是不正常中止造成嗎@@" 03/12 19:42 單就 memory leak 的定義的話 是指你 allocate 一段記憶體,但是卻沒有任何方法再次控制它 才稱為 memory leak 只要程式還在運行,那段記憶體就算浪費掉了(所以才叫leak) 如果該段 memory 直到程式結束前都有辦法取得(指標沒被指向其他地方) 就不算是 memory leak 和 stack 配置很像,只是回收是由作業系統處理 不正常終止會造成的通常是 resource leak 像是 socket 之類的資源 : → realmeat:memory leak 是你誤用計憶體位置然後產生當機(不正常中止 03/12 21:25 : → realmeat:當然有的memory leak不一定會當機就是了 03/12 21:26 這應該叫 memory access violation ... 吧? memory leak的可怕之處就在它幾乎不會當機 不會當機的錯誤才是最恐怖的 -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.21.174
VictorTom:謝推~~小弟好奇的就是像我malloc了卻不free, 或者Wiki上 03/12 21:43
VictorTom:的例子, 對同一ptr一直malloc都不還, 在不用暴memory的 03/12 21:43
VictorTom:情況下也許function return或程式結束(正常/非正常)這樣 03/12 21:44
Bencrie:access violation在*nix系統叫Segmentation fault 03/13 00:43
Bencrie:另外推薦用valgrind來抓memory leak , 雖然跑起來速度頗慢 03/13 00:44
lockcole:推valgrind 03/13 15:55
uefang:http://0rz.tw/dM7NO valgrind 介紹文章 03/14 01:43
legnaleurc:valgrind目前唯一的缺點就是...真的太慢,跑到抓狂= = 03/14 11:40