Функции для работы с указателями и адресами

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, но ни в коем случае не путать сочетание этих процедур.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: