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

有關TStringList釋放的問題

 
bagarandom
一般會員


發表:1
回覆:0
積分:0
註冊:2006-07-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-11-15 10:04:03 IP:218.175.xxx.xxx 訂閱
各位前輩,小弟有個問題想請教一下
今天我有一個function回傳的是tstringlist,如下
function test: tstringlist
var
tmp: tstringlist;
begin
tmp := tstringlist.create;
tmp.add('test');
result := tmp;
end;

以下是呼叫的例子
var
temp: tstringlist
begin
temp:= tstringlist.crate;
temp:= test
freeandnil(temp);
end;

當我最後 freeandnil(temp); 的時候,是否會將 function test 裡所crate的tmp也一起free掉??
如果不會的話,請問該如何去free掉??或是要改用別種方法??
AJ
一般會員


發表:9
回覆:19
積分:20
註冊:2003-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-11-16 17:01:52 IP:220.132.xxx.xxx 未訂閱
雖然程式執行起來不會有錯誤,但是小弟認為呼叫 test 之前已經 createt  stringlist 了,test 中就可以不需要create第二次,因為當您test 回傳的stringlist 參考直會取代原來的呼叫時create的stringlist,原來create的卻變成了記憶體中的孤兒。有錯請指正
Procedure test(tmp: tstringlist);
begin
tmp.add('test');
end;

var
temp: tstringlist
begin
temp:= tstringlist.crate;
test(temp);
freeandnil(temp);
end;
系統時間:2024-04-24 8:01:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!