Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Interfaces in lokalen Variablen und deren Freigabe

  Alt 24. Aug 2021, 09:45
Ein kleiner Test zeigt, dass die Freigabe ordentlich funktioniert:
Delphi-Quellcode:
procedure Test;
var
  a, b, c: TNameObject;
  g: IName;
begin
  a := TNameObject.Create('A');
  b := TNameObject.Create('B');
  c := TNameObject.Create('C');
  g := TTestObject.Create('G', a, b);
  writeln('interface ', g.Name);
end;

begin
  try
    { TODO -oUser -cConsole Main : Code hier einfügen }
    ReportMemoryLeaksOnShutDown := True;
    Test;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Object C wurde absichtlich nicht freigegeben:
Code:
object A create
object B create
object C create
object G create
interface G
object A destroy
object B destroy
object G destroy
Unexpected Memory Leak
An unexpected memory leak has occurred. The unexpected small block leaks are:

1 - 12 bytes: TNameObject x 1
13 - 20 bytes: UnicodeString x 1
Zeig uns doch mal dein TMyInterfacedObject und was du sonst noch so mit A und B anstellst.
Angehängte Dateien
Dateityp: zip TestInterface.zip (1,0 KB, 2x aufgerufen)

Geändert von Blup (24. Aug 2021 um 09:49 Uhr)
  Mit Zitat antworten Zitat