
- •1 Вариант.
- •2 Вариант.
- •7 Вариант.
- •8 Вариант.
- •9 Вариант.
- •10 Вариант.
- •11 Вариант.
- •12 Вариант.
- •13 Вариант.
- •14 Вариант.
- •15 Вариант.
- •16 Вариант
- •17 Вариант.
- •18 Вариант .
- •19 Вариант.
- •Var Note: Text;
- •20 Вариант.
- •Var Note: Text; к: Integer;
- •21 Вариант.
- •Var f: File; I: Byte; Rec: r; Result: Word;
- •22 Вариант.
- •Var p: pointer;
- •23 Вариант.
- •24 Вариант.
- •25 Вариант.
- •26 Вариант.
- •27 Вариант.
- •28 Вариант.
- •29 Вариант.
- •30 Вариант.
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 вар.