Иллюстрированный самоучитель по Turbo Pascal

Процедуры и функции для работы с динамической памятью

Процедура NEW может вызываться как функция. В этом случае параметром обращения к ней является тип переменной, размещаемой в куче, а функция NEW возвращает значение типа указатель. Например:

type
PInt =^Integer;
var
p: Pint;
begin
p: = New(PInt);
……
end.

При размещении в динамической памяти объекта разрешается в качестве второго параметра обращения к NEW указывать имя конструктора (см. гл.10).

Функция OFS

Возвращает значение типа WORD, содержащее смещение адреса указанного объекта. Вызов:

OFS (X)

Здесь Х- выражение любого типа или имя процедуры.

Функция PTR

Возвращает значение типа POINTER по заданному сегменту SEG и смещению OFS. Вызов:

PTR (SEG, OFS)

Здесь:

  • SEG – выражение типа WORD, содержащее сегмент;
  • OFS – выражение типа WORD, содержащее смещение.

Значение, возвращаемое функцией, совместимо с указателем любого типа.

Процедура RELEASE

Освобождает участок кучи. Обращение:

RELEASE (PTR)

Здесь PTR – указатель любого типа, в котором предварительно было сохранено процедурой MARK значение указателя кучи. Освобождается участок кучи от адреса, хранящегося в PTR, до конца кучи. Одновременно уничтожается список всех свободных фрагментов, которые, возможно, были созданы процедурами DISPOSE или FREEMEM.

Функция SEG

Возвращает значение типа WORD, содержащее сегмент адреса указанного объекта. Вызов:

SEG (X)

Здесь X – выражение любого типа или имя процедуры.

Функция SIZEOF

Возвращает длину в байтах внутреннего представления указанного объекта. Вызов:

SIZEOF (X)

Здесь X – имя переменной, функции или типа. Например, везде в программе из примера 6.1 вместо константы SIZEOFREAL можно было бы использовать обращение SIZEOF(REAL).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.