Управление кучей осуществляет монитор кучи, являющийся частью системной библиотеки Турбо Паскаля. Он реализует следу-{199}ющие процедуры и функции (табл. 11.1), размещающие и удаляющие динамические переменные из кучи и анализирующие ее состояние.
| Процедуры и функции
| Назначение
|
| New (VAR P : Pointer)
| Отводит место для хранения динамической переменной P^ и присваивает ее адрес ссылке P
|
| Dispose (VAR P : Pointer)
| Уничтожает связь, созданную ранее New, между ссылкой P и значением, на которое она ссылалась
|
| GetMem (VAR P : Pointer; Size : Word)
| Отводит место в Size байт в куче, присваивая адрес его начала указателю (ссылке) P
|
| FreeMem (VAR P : Pointer; Size : Word)
| Освобождает Size байт в куче, начиная с адреса, записанного в указателе (ссылке) P
|
| Mark (VAR P : Pointer)
| Запоминает в указателе P текущее состояние кучи
|
| Release (VAR P : Pointer)
| Возвращает кучу в состояние, запомненное ранее в P вызовом процедуры Mark(P)
|
| New (ТипСсылки) : Pointer
| Альтернативная форма создания динамической переменной P^ типа заданного базового типа
|
| MaxAvail : LongInt
| Возвращает длину (в байтах) самого длинного свободного участка памяти в куче
|
| MemAvail : LongInt
| Возвращает сумму длин всех свободных участков памяти (в байтах)
|