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}