Addr Возвращает адрес заданного объекта
Cseg Возвращает текущее значение регистра CS
Dseg Возвращает текущее значение регистра DS
Ofs Возвращает смещение заданного объекта
Ptr Преобразует базовый адрес сегмента и смещение в значение типа указатель
Seg Возвращает сегмент для заданного объекта
SPtr Возвращает текущее значение регистра SP
Sseg Возвращает текущее значение регистра SS
Основные действия над динамическими переменными - создание и уничтожение - реализуются в Турбо Паскале стандартными процедурами New и Dispose.
Процедура New предназначена для создания динамических переменных определенного типа. Она отводит новую область памяти в куче для данной динамической переменной и сохраняет адрес этой области в переменной-указателя. Можно присвоить значение переменной-указателю и с помощью оператора @ или функции Ptr. Оператор @ устанавливает переменную-указатель на область памяти, содержащую существующую переменную, включая и те переменные, которые имеют идентификаторы. Функция Ptr устанавливает переменную-указатель на определенный адрес в памяти. Например:
|
|
New(Int1);
P1:= @X;
Ptr($40, $49);
Для освобождения памяти в куче предназначена процедура Dispose с параметром указатель на динамическую переменную, причем эта переменная должна быть ранее размещена в куче посредством New, а тип размещенной переменной должен совпадать с базовым типом параметра процедуры Dispose. Например: Dispose(Int1) освобождает выделенный в предыдущем примере в куче фрагмент памяти так, что его можно снова использовать, если потребуется.
Если в программе не предполагается использование кучи, то при работе с программой Турбо Паскаля рекомендуется снизить потребность в памяти для создаваемой программы с помощью меню Options/Heap.
При освобождении динамической памяти нужно соблюдать осторожность, т.е. пользоваться либо New/Dispose, либо New/Mark/Release, либо GetMem/FreeMem, но ни в коем случае не путать сочетание этих процедур.