TObjectList<T> does not free owned objects upon destruction.
program TestObjectList;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
//System.Generics.Collections,
Rapid.Generics in 'C:\d11\Rapid.Generics.v2\source\Rapid.Generics.pas';
type
TSampleClass = class
public
constructor Create;
destructor Destroy; override;
end;
constructor TSampleClass.Create;
begin
inherited;
Writeln('Object created');
end;
destructor TSampleClass.Destroy;
begin
Writeln('Object destroyed');
inherited;
end;
procedure Test;
var
List: TObjectList<TSampleClass>;
begin
List := TObjectList<TSampleClass>.Create(True);
try
List.Add(TSampleClass.Create);
List.Add(TSampleClass.Create);
List.Add(TSampleClass.Create);
Writeln('Number of objects in list: ', List.Count);
finally
List.Free;
end;
end;
begin
try
Test;
Writeln('Press Enter to exit.');
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Output:
Object created
Object created
Object created
Number of objects in list: 3
Press Enter to exit.