Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Pascal 2005 Часть2.doc
Скачиваний:
3
Добавлен:
27.08.2019
Размер:
846.34 Кб
Скачать

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

ADDR(x) –функция возвращает результат типа Pointer, в. котором содержится адрес аргумента. Здесь x – любой объект программы (имя любой переменной, процедуры, функции). Возвращаемый адрес совместим с указателем любого типа. Аналогичный результат возвращает операция @.

CSEG – функция возвращает значение, хранящееся в регистре CS микропроцессора (в начале работы программы в регистре CS содержится сегмент начала кода программы). Результат возвращается в слове типа Word.

Dispose(типизированный_указатель) – процедура возвращает в кучу фрагмент динамической памяти, который ранее был зарезервирован за типизированным указателем. При повторном использовании процедуры применительно к уже освобожденному фрагменту возникает ошибка периода исполнения.

DSEG функция возвращает значение, хранящееся в регистре DS микропроцессора (в начале работы программы в регистре DS содержится сегмент начала данных программы). Результат возвращается в слове типа Word.

FreeMem(нетипизированный_указатель,size) – процедура возвращает в кучу фрагмент динамической памяти, который ранее был зарезервирован за нетипизированным указателем. Здесь sizeдлина в байтах освобождаемого фрагмента.

GetMem(нетипизированный_указатель,size) – процедура резервирует за нетипизированным указателем фрагмент динамической памяти требуемого размера.

Mark(PTR) – процедура запоминает текущее значение указателя кучи HeapPtr. Здесь PTRуказатель любого типа, в котором будет возвращено текущее значение HeapPtr. Используется совместно с процедурой Release для освобождения части кучи.

MaxAvail – функция возвращает размер в байтах наибольшего непрерывного участка кучи. Результат имеет тип LongInt.

MemAvail – функция возвращает размер в байтах общего свободного пространства кучи. Результат имеет тип LongInt.

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

Type

Pint=^Integer;

Var

p: Pint;

Begin

p:=New(Pint);

End.

QFS(x) – функция возвращает значение типа WORD, содержащее смещение адреса указанного объекта. Здесь x – выражение любого типа или имя процедуры.

PTR(SEG,OFS) – функция возвращает значение типа Pointer по заданному сегменту SEG и смещению OFS. Здесь SEGвыражение типа Word, содержащее сегмент; OFS — выражение типа WORD, содержащее смещение. Значение, возвращаемое функцией, совместимо с указателем любого типа.

RELEASE (PTR) – процедура освобождает участок кучи. Здесь PTR указатель любого типа, в котором предварительно было сохранено процедурой Mark значение указателя кучи. Освобождается участок кучи от адреса, хранящегося в PTR, до конца кучи. Одновременно уничтожается список всех свободных фрагментов, которые, возможно, были созданы процедурами Dispose или FreeMem.

SEG(x) – функция возвращает значение типа Word, содержащее сегмент адреса указанного объекта. Здесь x – выражение любого типа или имя процедуры.

SizeOf(x) – функция возвращает длину в байтах внутреннего представления указанного объекта. Здесь x – имя переменной, функции или типа.