釋放記憶體 |
尚未結案
|
NitRate2
一般會員 發表:19 回覆:13 積分:6 註冊:2004-08-26 發送簡訊給我 |
我自己寫了一個function
TStringList *function1() { TStringList *list=new TStringList; list->Add("line"); return list; } TStringList *list=function1();可是我覺得好像會有釋放記憶體的問題 1.使用完這個function以後,list佔的記憶體會自動被清掉嗎? 2.是否必須自己下delete指令將它清掉? 3.如果不清掉會不會變成記憶體中的垃圾? 4.有沒有比較好的做法? 謝謝! |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 我自己寫了一個functionTStringList *function1() { TStringList *list=new TStringList; list->Add("line"); return list; } TStringList *list=function1();可是我覺得好像會有釋放記憶體的問題 1.使用完這個function以後,list佔的記憶體會自動被清掉嗎? 2.是否必須自己下delete指令將它清掉? 3.如果不清掉會不會變成記憶體中的垃圾? 4.有沒有比較好的做法? 謝謝! >>< face="Verdana, Arial, Helvetica">NitRate2 你好: (1)已經被配置的記憶體,不會自動被清掉 (2)要另外下 delete 指令才能夠把它清掉 (3)沒有清掉當然會變成記憶體中的垃圾 (4)這點,就比較見仁見智了,小弟我認為比較好的做法,要掌握一個原則,就 是在哪裡配置的記憶體,就在哪裡清掉 (例如: 由 function 裡面 new 的記 憶體,就由 function 裡面 delete 掉;由 function 外面 new 的記憶體, 就由 function 外面 delete 掉;最好不要在不同的地方 new/delete)!! (5)為什麼?如果開發的專案裡面,所有的程式都是你自己寫的,那用什麼方式 都比較無所謂,因為你很清楚 function 內部的做法,知道該什麼時候把記 憶體給釋放掉;但是,如果這個 function 是寫給別人用的話,那最好遵循 一個共同原則,不然,會造成認知上的差異,容易產生記憶體的垃圾!! ( > >>>> < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |