Hallo,
ich hab den Code aus Interesse mal in eine Konsolenanwendung gepackt, aber mit ReportMemoryLeaksOnShutdown auf True zeigt er bei mir keine Leaks an, erst wenn ich myPrinter als TPrinter deklariere, was ja auch Sinn macht.
Version: Delphi 10 Seattle.
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
type
IPrinter =
interface
procedure write(
const value: Integer);
end;
TPrinter =
class(TInterfacedObject, IPrinter)
public procedure write(
const value: Integer);
end;
procedure TPrinter.
write(
const value: Integer);
begin
System.
Write('
Wert: ');
System.Writeln(value);
end;
procedure p();
var
myClosure: TProc;
myCounter: Integer;
myPrinter: IPrinter;
begin
myCounter := 10;
myPrinter := TPrinter.Create();
myClosure :=
procedure()
begin
myPrinter.
write(myCounter);
Dec(myCounter);
if (myCounter > 0)
then myClosure();
end;
myClosure();
end;
begin
ReportMemoryLeaksOnShutdown:=true;
p();
Readln;
end.