Re: [問題] 動態記憶體配置

看板C_and_CPP (C/C++)作者 (CA)時間16年前 (2009/03/12 21:38), 編輯推噓4(404)
留言8則, 5人參與, 最新討論串2/6 (看更多)
※ 引述《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

03/12 21:43, , 1F
謝推~~小弟好奇的就是像我malloc了卻不free, 或者Wiki上
03/12 21:43, 1F

03/12 21:43, , 2F
的例子, 對同一ptr一直malloc都不還, 在不用暴memory的
03/12 21:43, 2F

03/12 21:44, , 3F
情況下也許function return或程式結束(正常/非正常)這樣
03/12 21:44, 3F

03/13 00:43, , 4F
access violation在*nix系統叫Segmentation fault
03/13 00:43, 4F

03/13 00:44, , 5F
另外推薦用valgrind來抓memory leak , 雖然跑起來速度頗慢
03/13 00:44, 5F

03/13 15:55, , 6F
推valgrind
03/13 15:55, 6F

03/14 01:43, , 7F
http://0rz.tw/dM7NO valgrind 介紹文章
03/14 01:43, 7F

03/14 11:40, , 8F
valgrind目前唯一的缺點就是...真的太慢,跑到抓狂= =
03/14 11:40, 8F
文章代碼(AID): #19kH1F8k (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19kH1F8k (C_and_CPP)