Вся динамическая память в Турбо Паскале рассматривается как сплошной массив байтов, который называется кучей. Физически куча располагается в старших адресах сразу за областью памяти, которую занимает тело программы.
Начало кучи хранится в стандартной переменной HeapOrg, конец - в переменной HeapEnd. Текущую границу незанятой динамической памяти указывает указатель HeapPtr.
Для управления кучей используются следующие стандартные процедуры и функции.
Процедуры динамического распределения
Dispose Уничтожает динамическую переменную
FreeMem Уничтожает динамическую переменную данного размера
GetMem Создает новую динамическую переменную заданного размера и устанавливает переменную-указатель для нее
Mark Записывает в переменной-указателе состояние кучи
New Создает новую динамическую переменную и устанавливает на нее переменную-указатель
Release Возвращает кучу в заданное состояние
Функции динамического распределения
MaxAvail Возвращает размер наибольшего непрерывного свободного блока кучи, соответствующей размеру наибольшей динамической переменной, которая может быть распределена в момент вызова MaxAvail
MemAvail Возвращает количество имеющихся в куче свободных байтов