有關TStringList釋放的問題 |
|
bagarandom
一般會員 發表:1 回覆:0 積分:0 註冊:2006-07-12 發送簡訊給我 |
各位前輩,小弟有個問題想請教一下
今天我有一個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 發送簡訊給我 |
雖然程式執行起來不會有錯誤,但是小弟認為呼叫 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; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |