Використання вільної пам'яті
p : array[ 0..9 ]of pointer; num : Longint =10000.
Після встановлення вказівників на 10 ділянок
for cnt:=0 to 9 do getmem(p[cnt], num*sizeof(Longint))
елемент масиву з індексом k, де 0 k 9, задається виразом
Parl(p[k div num])^[k mod num].
І навпаки, вираз Parl(p[i])^[j] задає елемент масиву з індексом num*(i-1)+j.
Приклад. Наведемо програму, за якою створюється масив із 135 тисяч елементів типу LongInt, тобто по 4 байти. Елементам присвоюються їх порядкові номери. Далі друкуються значення тих елементів, номери яких кратні 4000, а також восьми останніх. Перед захопленням пам'яті та після нього друкуються загальний розмір незайнятої частини купи та найбільший розмір її суцільної незайнятої ділянки. Якщо за якихось причин виконання програми завершується аварійно, слід придивитися саме до останніх величин.
program arrptrfr;
const blocks=9;
type lng=longint; arl=array[0..0]of lng; parl=^arl;
var p : array[0..blocks-1]of pointer;
num, glob : lng ; k : lng; cnt: integer;
begin
num:=15000; glob:=num*blocks;
writeln( 'вільна пам''ять : ', memavail,
'; найбільша ділянка : ', maxavail);
for cnt:=0 to blocks-1 do getmem(p[cnt], num*sizeof(lng));
for k:=0 to glob-1 do
parl(p[k div num])^[k mod num]:=k;
cnt:=0;for k:=0 to glob-1 do
begin
if (k mod 4000 = 0) or (k>glob-1-8) then
begin
write(k:8, parl(p[k div num])^[k mod num]:8);