Для работы с динамическими переменными в модуле System языка Турбо Паскаль предусмотрено несколько процедур и функций.
В случае типизированных указателей динамические переменные создают с помощью процедуры new(p), которая выделяет в динамической памяти столько байтов, сколько требуется для хранения переменной заданного указателем р типа, а указателю р присваивается адрес первого байта выделенной в памяти ячейки.
В случае нетипизированных указателей динамические переменные создают с помощью процедуры getmem(p, size), которая выделяет в динамической памяти столько байтов, сколько указано переменной size, а указателю р присваивается адрес первого байта выделенной в памяти ячейки.
Для освобождения динамически выделенной для типизированных указателей памяти можно использовать процедуру dispose(p), которая очищает память, указанную ссылкой р.
В случае нетипизированных указателей для очистки динамической памяти предусмотрена процедура freemem(p, size), которая освобождает size байтов, начиная с адреса р.
После очищения (освобождения) указатели сохраняют свои значения, однако при этом указывают уже на несуществующие динамические переменные. Поэтому рекомендуется всем высвободившимся указателям присвоить значение nil.
При выделении динамической памяти полезными являются функции memavail и maxavail, первая из которых возвращает общий размер свободной динамической памяти в байтах, а вторая – размер наибольшего непрерывного участка свободной памяти.
Например,
var
p: ^real;
. . . . .
if maxavail > sizeof (real) then new(p);
. . . . .