Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
где 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!