|
|
|
|
|
by undreren
3231 days ago
|
|
No. Delphi offers reference counting, but only on interface variables. It's a huge difference really, because if your last interface variable that points to an object goes out of scope, the object is freed from memory. Even if you have raw class pointers to it. Example: IMyInterface = interface
procedure Foo;
end;
TMyClass = class(TInterfacedObject, IMyInterface)
procedure Foo;
end;
procedure TMyClass.Foo;
begin
WriteLn('Foo');
end;
procedure DoTheFoo(AObj: IMyInterface);
begin
AObj.Foo;
end;
procedure SomeMethod;
var
LObj: TMyClass;
begin
LObj := TMyClass.Create;
DoTheFoo(LObj);
LObj.Foo; // <-- Will cast nil pointer exception,
// as object was freed when AObj in DoTheFoo went
// out of scope
end;
I work with Delphi in my day job. |
|
The 5th chapter from "The Garbage Collection Handbook", http://gchandbook.org/, one of the most renowned books in the field, there are of course other equally renowned sources I can refer to.