【发布时间】:2015-07-08 16:24:27
【问题描述】:
在 Delphi 中,我正在从已经创建的基类中转换一个继承类。我相信这在两个类之间共享基类地址,但是继承的类的额外成员获得分配给它们的额外内存,但没有初始化。
如果共享基类随后被释放,这是否会导致 Inherited 类的成员发生内存泄漏?
如果是这样,如果我想保持基类不变,那么清理继承类成员的最佳方法是什么?
program Project1;
uses
SysUtils;
type
TBase = class(TObject)
public
basemember : string ;
Constructor Create() ;
end;
TInherited = class(TBase)
public
inheritedmember : string ;
Constructor Create() ;
end ;
Constructor TBase.Create() ;
begin
basemember := 'Basemember' ;
Writeln ('basemember') ;
end ;
Constructor TInherited.Create() ;
begin
inheritedmember := 'inheritedmember' ;
Writeln ('inheritedmember') ;
end ;
var
baseclass : TBase;
castbaseclass : TInherited;
begin
Writeln ('Base Class');
baseclass := TBase.Create();
Writeln ('');
Writeln ('Cast Inherited Class');
castbaseclass := TInherited(baseclass);
baseclass.Free; //memory leak?
ReadLn;
end.
【问题讨论】:
标签: delphi memory-leaks