13.02.2010 15:32, Marco van de Voort:
2) GetHeapStatus.TotalAllocated sometimes return negative values, though
I haven't been able to prepare a reasonably small example yet (should I?)

Please attach example programs to a bugreport. Thank you.

I've created a small self-consistent example, but something is wierd with it. In order to reproduce the effect, put the example in a file named 000.pas (with other filename misbehaviour might not trigger!), compile with 2.4.0 (do not add any options to compiler) and run on windows. Then (hopefully) you will see bogus TotalAllocated values:
4194281K <enter>
4194257K <enter>
4194233K <...>
4194208K
4194184K
4194160K
4194136K
4194112K
4194088K
4194064K
....
Please note that while the problem itself is quite stable, the example is not. That is, if you insert or remove some code, change the filename etc, then the example might just start work properly! (Maybe it is alignment-related, not sure)

I haven't sent this to mantis yet. Please someone let me know if this example is appropriate (or not).

Thank you.

Nikolai
------------------------- cut -------------------------------
{$mode delphi}
{$apptype console}

uses
  SysUtils;

const
data: array [0.. 12] of integer = (9000, 1000, 9000, 12, 9000, 26, 9000, 74, 9000, 1, 2000, 9000, 1);

var
  p: pointer;
  i: integer;
begin
  p := nil;
  repeat
    for i := low(data) to high(data) do
      ReAllocMem(p, data[i]*4);
    writeln((GetHeapStatus.TotalAllocated shr 10), 'K');
    readln;
  until false;
end.
------------------------- cut -------------------------------

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to