Лабораторный практикум по программированию на языке Паскаль. Найханова Л.В - 97 стр.

UptoLike

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