Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы к окр2.docx
Скачиваний:
7
Добавлен:
01.04.2025
Размер:
65.85 Кб
Скачать

22 Вариант.

. С помощью стандартной процедуры New (P); где Р - переменная типа «типизированный указатель». Эта процедура создает новую динамическую переменную (выделяет под нее участок памяти) и устанавливает на нее указатель P P записывается адрес выделенного участка памяти).

С помощью стандартной процедуры Dispose (P); где P - переменная типа «указатель» (типизированный).

В результате работы процедуры DISPOSE(P) участок памяти, связанный с указателем P, помечается как свободный для возможных дальнейших размещений. При этом физической чистки указателя P и связанной с ним памяти не происходит, поэтому, даже удалив этот экземпляр записи, можно все же получить значения ее полей, однако использовать это обстоятельство не рекомендуется.

MemAvail; - эта функция возвращает общее число свободных байтов динамической памяти, то есть суммируются размеры всех свободных участков и объем свободной динамической области. Тип возвращаемого значения - longint.

MaxAvail; - эта функция возвращает размер в байтах наибольшего свободного в данный момент участка в динамической области. По этому размеру можно судить о том, какую наибольшую динамическую память можно выделить. Тип возвращаемого значения - longint.

TYPE ZAP=RECORD

FIELD1: STRING [20];

FIELD2: REAL;

END;

Var p: pointer;

BEGIN

...

IF MAXAVAIL <SIZEOF(ZAP) THEN

WRITELN ('HE ХВАТАЕТ ПАМЯТИ!')

ELSE

GETMEM(Р, SIZEOF(ZAP));

. С помощью стандартной процедуры FreeMem (P, size); где P - переменная типа «указатель», size - целочисленное выражение размера памяти в байтах для освобождения.

Эта процедура помечает память размером, равным значению выражения SIZE, связанную с указателем P, как свободную (см. пример для GETMEM).

. С помощью стандартных процедур Mark (P); Release (P); где P - переменная типа «указатель»;

MARK - запоминает состояние динамической области в переменной-указателе Р;

RELEASE - освобождает всю динамическую память, которая выделена процедурами NEW или GETMEM после запоминания текущего значения указателя Р процедурой MARK.

23 Вариант.

. С помощью стандартной процедуры FreeMem (P, size); где P - переменная типа «указатель», size - целочисленное выражение размера памяти в байтах для освобождения.

Эта процедура помечает память размером, равным значению выражения SIZE, связанную с указателем P, как свободную (см. пример для GETMEM).

MaxAvail; - эта функция возвращает размер в байтах наибольшего свободного в данный момент участка в динамической области. По этому размеру можно судить о том, какую наибольшую динамическую память можно выделить. Тип возвращаемого значения - longint.

2. С помощью стандартной процедуры GetMem (P,size); где P - переменная типа «указатель» требуемого типа; size - целочисленное выражение размера запрашиваемой памяти в байтах.

Эта процедура создает новую динамическую переменную требуемого размера и свойства, а также помещает адрес этой созданной переменной в переменную Р типа «указатель». Доступ к значению созданной переменной можно получить с помощью P^.

Остальные процедуры и примеры см. в 21-22 вар.