I feel like this was addressed but I couldn't find any references. The program
below prints the following:
Initialize
Create
Finalize
Finalize
Why is Finalize called twice? I thought those were supposed to be called in
pairs with initialize?
==================
{$mode objfpc}
{$modeswitch advancedrecords}
program test;
type
TManagedObject = record
class function Create: TManagedObject; static;
class operator Finalize(var self: TManagedObject); inline;
class operator Initialize(var self: TManagedObject); inline;
end;
class function TManagedObject.Create: TManagedObject;
begin
writeln('Create');
end;
class operator TManagedObject.Finalize(var self: TManagedObject);
begin
writeln('Finalize');
end;
class operator TManagedObject.Initialize(var self: TManagedObject);
begin
writeln('Initialize');
end;
begin
TManagedObject.Create;
end.
Regards,
Ryan Joseph
_______________________________________________
fpc-pascal maillist - [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal