線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1198
推到 Plurk!
推到 Facebook!

釋放記憶體

尚未結案
NitRate2
一般會員


發表:19
回覆:13
積分:6
註冊:2004-08-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-07 14:52:02 IP:193.146.xxx.xxx 未訂閱
我自己寫了一個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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-07 15:37:42 IP:203.73.xxx.xxx 未訂閱
引言: 我自己寫了一個function
TStringList *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 --
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-07-01 19:55:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!