ВУЗ:
Составители:
Рубрика:
97
3.
Процедура MARK присваивает ссылочной переменной значение, указывающее на
вершину кучи, и имеет следующий вид: Mark ( < имя ссылочной переменной >);
4.
Процедура RELEASE удаляет из кучи переменную, указанную указателем, и все
переменные, следующие за ней. Release (< имя ссылочной переменной >);
5.
Процедура GETMEM резервирует в куче область оперативной памяти:
GetMem (< имя ссылочной переменной, размер памяти в байтах >). Процедура
FREEMEM возвращает в кучу область оперативной памяти, указанную переменной
ссылочного типа: FreeMem (< имя ссылочной памяти, размер памяти в байтах >);
6.
Размер области, возвращаемой с помощью процедуры FREEMEM, должен быть таким
же, как и у области, определенной с помощью GetMem. Процедуры NEW - DISPOSE,
MARK - RELEASE и GETMEM - FREEMEM образуют три механизма управления
памятью кучи. Первые два механизма используются для однотипных данных, а их
отличие можно пояснить с помощью следующей схемы (рис.2a. и 2б.)
Куча После Куча После
Dispose Release
New(p1) →
var1 var1
Mark(p1) →
var1 var1
var2 var2 var2 var2
New(p2) →
var3
Mark(p1) →
var3
var4 var4 var4
New(p3) →
var5 var5
Mark(p3) →
var5
a) б)
Рис.1. Структура памяти типа "куча".
Процедуры GetMem - FreeMem используются для данных любого типа. В программе
следует пользоваться одним из этих механизмов в зависимости от постановки задачи.
7.
Функция MAXAVAIL - эта функция определяет размер наибольшей цельной области в
куче. Ее результатом является величина целого типа.
13.6. Динамические списковые структуры.
Часто ссылочные типы данных используются для организации динамических списковых
структур. К ним относятся очереди, списки, деревья и подобные структуры.
Для задания списковых структур необходимо определить объект комбинированного типа, в
состав которого входит ссылка на объект данного типа. В языке Паскаль разрешено
определять ссылки на объекты до описания объектов, например:
Type
ukaz = ^ pole;
dannye = < тип >;
pole = record
c : ukaz;
d : dannye
end;
13.6.1. Однонаправленные списки.
Определив ссылочный тип, можно построить связанный однонаправленный список (рис.3).
First C C Nil
D D D
Рис. 2. Однонаправленный список.
3. Процедура MARK присваивает ссылочной переменной значение, указывающее на вершину кучи, и имеет следующий вид: Mark ( < имя ссылочной переменной >); 4. Процедура RELEASE удаляет из кучи переменную, указанную указателем, и все переменные, следующие за ней. Release (< имя ссылочной переменной >); 5. Процедура GETMEM резервирует в куче область оперативной памяти: GetMem (< имя ссылочной переменной, размер памяти в байтах >). Процедура FREEMEM возвращает в кучу область оперативной памяти, указанную переменной ссылочного типа: FreeMem (< имя ссылочной памяти, размер памяти в байтах >); 6. Размер области, возвращаемой с помощью процедуры FREEMEM, должен быть таким же, как и у области, определенной с помощью GetMem. Процедуры NEW - DISPOSE, MARK - RELEASE и GETMEM - FREEMEM образуют три механизма управления памятью кучи. Первые два механизма используются для однотипных данных, а их отличие можно пояснить с помощью следующей схемы (рис.2a. и 2б.) Куча После Куча После Dispose Release New(p1) → var1 var1 Mark(p1) → var1 var1 var2 var2 var2 var2 New(p2) → var3 Mark(p1) → var3 var4 var4 var4 New(p3) → var5 var5 Mark(p3) → var5 a) б) Рис.1. Структура памяти типа "куча". Процедуры GetMem - FreeMem используются для данных любого типа. В программе следует пользоваться одним из этих механизмов в зависимости от постановки задачи. 7. Функция MAXAVAIL - эта функция определяет размер наибольшей цельной области в куче. Ее результатом является величина целого типа. 13.6. Динамические списковые структуры. Часто ссылочные типы данных используются для организации динамических списковых структур. К ним относятся очереди, списки, деревья и подобные структуры. Для задания списковых структур необходимо определить объект комбинированного типа, в состав которого входит ссылка на объект данного типа. В языке Паскаль разрешено определять ссылки на объекты до описания объектов, например: Type ukaz = ^ pole; dannye = < тип >; pole = record c : ukaz; d : dannye end; 13.6.1. Однонаправленные списки. Определив ссылочный тип, можно построить связанный однонаправленный список (рис.3). First C C Nil D D D Рис. 2. Однонаправленный список. 97
Страницы
- « первая
- ‹ предыдущая
- …
- 95
- 96
- 97
- 98
- 99
- …
- следующая ›
- последняя »