鉴于以下戴尔菲代码, Foo
是 free
d on FormClose
,但 TFoo.Destroy
没有被调用,因此, Bar
不是 Free
d,导致内存泄漏?
我是不是漏掉了点什么 或者应该免费打给Foo 某个时候被摧毁了?
type
TBar = class
SomeInteger : integer;
end;
TFoo = class
Bar : TBar;
constructor Create();
destructor Destroy();
end;
var
Foo : TFoo;
implementation
constructor TFoo.Create;
begin
Bar := TBar.Create;
Bar.SomeInteger := 2;
end;
destructor TFoo.Destroy;
begin
Bar.Free;
Bar := nil;
showmessage( Destroyed! );
end;
procedure TForm10.FormCreate(Sender: TObject);
begin
Foo := TFoo.Create;
showmessage( Foo created );
end;
procedure TForm10.FormDestroy(Sender: TObject);
begin
Foo.Free;
Foo := nil;
end;