mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-12 01:52:36 +02:00
58 lines
956 B
ObjectPascal
58 lines
956 B
ObjectPascal
Program heapex;
|
|
|
|
{ Program used to demonstrate the usage of heaptrc unit }
|
|
|
|
Uses heaptrc;
|
|
|
|
Var P1 : ^Longint;
|
|
P2 : Pointer;
|
|
I : longint;
|
|
Marker : Longint;
|
|
|
|
Procedure SetMarker (P : pointer);
|
|
|
|
Type PLongint = ^Longint;
|
|
|
|
begin
|
|
PLongint(P)^:=Marker;
|
|
end;
|
|
|
|
Procedure Part1;
|
|
|
|
begin
|
|
// Blocks allocated here are marked with $FFAAFFAA = -5570646
|
|
Marker := $FFAAFFAA;
|
|
New(P1);
|
|
New(P1);
|
|
Dispose(P1);
|
|
For I:=1 to 10 do
|
|
begin
|
|
GetMem (P2,128);
|
|
If (I mod 2) = 0 Then FreeMem(P2,128);
|
|
end;
|
|
GetMem(P2,128);
|
|
end;
|
|
|
|
Procedure Part2;
|
|
|
|
begin
|
|
// Blocks allocated here are marked with $FAFAFAFA = -84215046
|
|
Marker := $FAFAFAFA;
|
|
New(P1);
|
|
New(P1);
|
|
Dispose(P1);
|
|
For I:=1 to 10 do
|
|
begin
|
|
GetMem (P2,128);
|
|
If (I mod 2) = 0 Then FreeMem(P2,128);
|
|
end;
|
|
GetMem(P2,128);
|
|
end;
|
|
|
|
begin
|
|
SetExtraInfo(SizeOf(Marker),@SetMarker);
|
|
Writeln ('Part 1');
|
|
part1;
|
|
Writeln('Part 2');
|
|
part2;
|
|
end. |