Лекция: 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

еще рефераты
Еще работы по информатике