New(i4);

i4^:=4; (*1*)

Disроsе (i2);{освобождается второе размещение}

New (i); {память нужного размера (в данном случае два байта) выделяется на первом свободном месте от начала кучи, достаточном для размещения данной переменной; в этом примере - это участок, который занимала переменная i2^, ее адрес остался в указателе i2 }

i^:=5; (*2*)

Dispose(i3); {освобождается третье размещение}

New(r); {память под переменную типа real выделяется в вершине кучи, так как размер дырки с адресом i3 (2 байта) мал для размещения переменной типа real, для которой необходимо 6 байт }

r^:=6; (*3*)

writeln (r^); { ВЫВОД: 6.0000000000E+00}