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(out used: ptruint);
var
  fpcHeapStatus : TFPCHeapStatus;
begin
  fpcHeapStatus := GetFPCHeapStatus();
  used:=fpcHeapStatus.CurrHeapUsed;
  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;
  u1, u2: ptruint;
begin
  randomize();
  writeln('randseed: ',randseed);
  GetStats(u1);
  for i := 0 to 50 do begin
    SetLength(a, RandomRange(1024,1024*1024*15));
  end;
  SetLength(a, 0);
  GetStats(u2);
  if u1<>u2 then
    halt(1);
end.
