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.