Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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





Дата публикования: 2014-11-04; Прочитано: 233 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...