Actually I was able to distill it down into a smaller example: ------------------------------------------------ program Project1;
{$mode objfpc}{$H+} uses Classes, SysUtils; function RandomRange(const low : longint; const high : longint) : longint; begin if (high < low) then result := high + random(low - high + 1) else Result := low + random(high - low + 1); end; procedure GetStats; var fpcHeapStatus : TFPCHeapStatus; begin fpcHeapStatus := GetFPCHeapStatus(); writeln(' heap status: cu=' + IntToStr(fpcHeapStatus.CurrHeapUsed) + ', cs=' + IntToStr(fpcHeapStatus.CurrHeapSize) + ', cf=' + IntToStr(fpcHeapStatus.CurrHeapFree) + ', mu=' + IntToStr(fpcHeapStatus.MaxHeapUsed) + ', ms=' + IntToStr(fpcHeapStatus.MaxHeapSize)); end; var i : integer; a : array of byte; begin randomize(); for i := 0 to 1000 do begin SetLength(a, RandomRange(1024,1024*1024*15)); end; GetStats(); SetLength(a, 0); GetStats(); end. ------------------------------------------------ My output: $ ./project1 heap status: cu=4277286960, cs=16154624, cf=33834960, mu=4294897312, ms=31752192 heap status: cu=4276332896, cs=458752, cf=19093152, mu=4294897312, ms=31752192 Seems like that should never happen. I'll log an issue in the bug tracking system. -SG -- This email is fiction. Any resemblance to actual events or persons living or dead is purely coincidental. Seth Grover sethdgrover[at]gmail[dot]com _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal