Лекция: Release (P);
где P — переменная типа «указатель»;
Mark — запоминает состояние динамической области в переменной-указателе р;
Release — освобождает всю динамическую память, которая выделена процедурами New или GetMem после запоминания текущего значения указателя р процедурой Mark.
Обращения к Markи Release нельзя чередовать с обращениями к Dispose и FRееМеm ввиду различий в их реализации.
Например:
Var
p:pointer;
p1, p2, p3:^integer;
Begin
New(p1);
p1^ := 10;
Mark(p); {пометка динамической области}
New(p2);
p2^ := 25;
New(p3);
p3^ := p2^ + p1^;
Writeln ( p3^);
Release(p); {память, связанная с p2^ и p3^, освобождена, а p1^ может использоваться}
End.
Стандартные функции обработки динамической памяти.
В процессе выполнения программы может возникнуть необходимость наблюдения за состоянием динамической области. Цель такого наблюдения — оценка возможности очередного выделения динамической области требуемого размера. Для этих целей Турбо Паскаль предоставляет две функции (без параметров).
MaxAvail;
Эта функция возвращает размер в байтах наибольшего свободного в данный момент участка в динамической области. По этому размеру можно судить о том, какую наибольшую динамическую память можно выделить.
Тип возвращаемого значения — longint.
type zap=record
field1: string [20];
field2: real;
End;
var p: pointer;
Begin
...
if MaxAvail <SizeOf(zap)
Then
Writeln ('He хватает памяти!')
Else