作者legnaleurc (CA)
看板C_and_CPP
標題Re: [問題] 動態記憶體配置
時間Thu Mar 12 21:38:20 2009
※ 引述《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
→ legnaleurc:valgrind目前唯一的缺點就是...真的太慢,跑到抓狂= = 03/14 11:40