[fpc-devel] TVarRec.VAnsiString memory leak?
    petr.kristan at epos.cz 
    petr.kristan at epos.cz
       
    Fri Mar 28 09:16:18 CET 2008
    
    
  
Hi.
This construction of setup vr.VAnsiString cause memoryleak:
program str;
uses
  heaptrc;
var
  s: ansistring;
  vr: TVarRec;
begin
  SetString(s, 'xxx', 3); //ok
  vr.VType := vtAnsiString;
  SetString(AnsiString(vr.VAnsiString), 'yyy', 3); //Memory leak.
end.
Heap dump by heaptrc unit
2 memory blocks allocated : 24/32
1 memory blocks freed     : 12/16
1 unfreed memory blocks : 12
True heap size : 32768
True free heap : 32672
Should be : 32688
Call trace for block $B7FEE0C0 size 12
  $08050E82  $fpc_ansistr_setlength,  line 569 of /home/common/fpc/rtl/inc/astrings.inc
  $080480DF  main,  line 10 of str.pas
  $080678B1  _FPC_proc_start,  line 67 of ./i386/si_prc.inc
Is right that in destroying TVarRec is not decremented ansistring reference?
If so, how to correctly set TVarRec.VAnsiString without memoryleak? 
I need to fill "a: array of TVarRec" with ansistrings.
Thanks.
Petr
-- 
Ing. Petr Kristan
.
EPOS PRO s.r.o., Bozeny Nemcove 2625, 530 02 Pardubice
tel: +420 466335223    Czech Republic (Eastern Europe) 
fax: +420 466510709
    
    
More information about the fpc-devel
mailing list