Hi I have a program that creates a TInterfacedObject and nothing else.
program project1; {$mode objfpc}{$H+} uses Classes; var io: TInterfacedObject; begin io := TInterfacedObject.Create; end. I compile it with -gh (heap trace) and get the following output: [DBGTGT] Heap dump by heaptrc unit [DBGTGT] 19 memory blocks allocated : 1191/1208 [DBGTGT] 18 memory blocks freed : 1167/1184 [DBGTGT] 1 unfreed memory blocks : 24 [DBGTGT] True heap size : 393216 [DBGTGT] True free heap : 393024 [DBGTGT] Should be : 393064 [DBGTGT] Call trace for block $00007FFFF7FAE6C0 size 24 [DBGTGT] $00000000004001F2 line 11 of project1.lpr [DBGTGT] $00000000004001B0 If I add "io.free" then there are no unfreed memory blocks. Now, I have understood interfaced objects are reference counted and freed automatically. Is this a bug or did I understand it wrong? Regards, Juha _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal