Введение в программирование. Pascal и Delphi. Гурьянов Л.В - 95 стр.

UptoLike

94
Поэтому описание указателя должно быть только такого вида:
^<имя
типа данных>
.
New(P)выделить память, размер которой определяется типом
данных указателя
P. После успешного завершения операции New
значением переменной
P становится начальный адрес выделенной
области памяти.
Выделяемая процедурой New память не инициализируется каким-
либо значением
.
Dispose(P)освободить память, начальный адрес которой опре-
деляется значением указателя
P. Размер освобождаемой памяти оп-
ределяется типом данных указателя
P.
Пример 1.
Программа сохраняет информацию, отображаемую на дисплее в
текстовом режиме (размер экрана: 80 символов в строке
× 25 строк;
размер памяти для сохранения одного символа: 2байтавсего
4000 байт).
type
ekr =array[1..4000] of byte; {изображениеэто массив
из 4000 байт }
var
Ekran : ekr absolute $B800:$0000;
{ Значение переменная Ekran (4000 байт) размещается }
{ в памяти, начиная с адреса $B800:$0000 – }
{ адреса видеопамяти текстового режима }
SaveEkran: ^ekr; {указатель на данные типа ekr}
begin
new(SaveEkran); { получить память для размещения }
{ 4000 байтздесь будет сохраняться изображение экрана }
SaveEkran^ := Ekran; { сохранение состояния экрана – }
{ запоминание 4000 байт видеопамяти}
< операторы изменения состояния экрана>
Ekran := SaveEkran ^; { восстановление изображения на экране }
Поэтому описание указателя должно быть только такого вида: ^<имя
типа данных>.
   New(P) – выделить память, размер которой определяется типом
данных указателя P. После успешного завершения операции New
значением переменной P становится начальный адрес выделенной
области памяти.
   Выделяемая процедурой New память не инициализируется каким-
либо значением.
   Dispose(P) – освободить память, начальный адрес которой опре-
деляется значением указателя P. Размер освобождаемой памяти оп-
ределяется типом данных указателя P.
   Пример 1.
   Программа сохраняет информацию, отображаемую на дисплее в
текстовом режиме (размер экрана: 80 символов в строке × 25 строк;
размер памяти для сохранения одного символа: 2байта – всего
4000 байт).
  type
    ekr =array[1..4000] of byte; {изображение – это массив
                                  из 4000 байт }
  var
    Ekran      : ekr absolute $B800:$0000;
         { Значение переменная Ekran (4000 байт) размещается }
         { в памяти, начиная с адреса $B800:$0000 –             }
         { адреса видеопамяти текстового режима                 }
    SaveEkran: ^ekr; {указатель на данные типа ekr}
  begin
    new(SaveEkran); { получить память для размещения }
     { 4000 байт –здесь будет сохраняться изображение экрана }
    SaveEkran^ := Ekran; { сохранение состояния экрана – }
                           { запоминание 4000 байт видеопамяти}
  …
  < операторы изменения состояния экрана>
  …
  Ekran := SaveEkran ^; { восстановление изображения на экране }


                               94