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

内存泄漏

尚未結案
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-25 09:33:58 IP:218.70.xxx.xxx 未訂閱
各位大大: 你们好! 我想问个问题: 程序中有个类A A=class fuction aa:integer; end; B类实现对A的引用 B=class constructor create; destructor destory; Function setA(a:A):A; private FA; end; Fuction SetA(a: A):A; var aa:^A; begin aa:=@A; FA:=aa^; aa:=nil; end; 请问这样写会不会发生内存leak的问题?内存中是不是有两个A对象的副本呢? 如果发生了如何解决? 谢谢!】
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-25 10:18:00 IP:61.165.xxx.xxx 未訂閱
aa:=@A;是否应该替换为aa:=A.create(self)或 aa:=A.create;直接用aa:=@A这句本人认为会有问题的。
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-25 10:37:14 IP:218.70.xxx.xxx 未訂閱
aa:=A.create(self)或 aa:=A.create;这样作的话,内存中有两个A的对象了。 我的程序是这样的。希望类B实现类A的一些功能。 类A处于Unit1单元 类B处于Unit2单元。 在Unit1单元创建了类A的对象a后,创建B对象b b.setA(a)
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-25 10:57:25 IP:61.165.xxx.xxx 未訂閱
引言: aa:=A.create(self)或 aa:=A.create;这样作的话,内存中有两个A的对象了。 我的程序是这样的。希望类B实现类A的一些功能。 类A处于Unit1单元 类B处于Unit2单元。 在Unit1单元创建了类A的对象a后,创建B对象b b.setA(a)
A只是类,并不是对象,是嘛?A是非简单类型,也就是它并不是一个具体存在,而是一个模板。只有A.Create后,它才具有了对象。也就是实体。所以在B中还是应该创建为好。 < >本人的愚见,还望达者指教。< >
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-25 12:30:14 IP:218.70.xxx.xxx 未訂閱
我想我说的不是很清楚 >> .. >> 谢谢!
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-25 13:59:25 IP:61.165.xxx.xxx 未訂閱
引言: 我想我说的不是很清楚 >> .. >> 谢谢! < face="Verdana, Arial, Helvetica"> 那是不是应该 >
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-25 17:56:12 IP:218.70.xxx.xxx 未訂閱
笔误,呵呵
系統時間:2024-05-12 19:41:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!