Статическая память

Рис. 14. Распределение рабочего пространства оперативной памяти

Классы памяти

Рис. 13. Связывание при идентификации указанием

Рис. 12. Связывание при идентификации именованием

Элементом хранения

Связывание – это определение взаимосвязи между идентификатором объекта (именем или указателем на объект) и элементом хранения объекта.

При идентификации именованием существует статическая связь между именем объекта и его элементом хранения (рис. 12).

При идентификации указанием существует статическая связь между именем указателя и элементом хранения указателя. Между элементом хранения указателя и тем объектом, на который он указывает, устанавливается динамическая связь (рис.13).


Т.к. элемент хранения указателя содержит адрес объекта, в процессе выполнения программы один и тот же указатель может открывать доступ к различным объектам одного и того же типа (и атрибутам этих объектов).

Var op1, op2: Point; p: PPoint; Begin  
Op1.X:=10; op1.Y:=20; { заполнение атрибутов объекта op1 }
Op2.X:=100; op2.Y:=200; { заполнение атрибутов объекта op2 }
P:=@op1; { установка указателя p на объект op1 }
Writeln(p^.X, p^.Y); { p^.X =10, p^.Y =20 }
P:=@op2; { установка указателя p на объект op2 }
Writeln(p^.X, p^.Y); { p^.X =100, p^.Y =200 }

3. время жизни объекта. КЛАССЫ ПАМЯТИ

3.1. Понятие “времени жизни” объекта

Все объекты программы подразделяются на статические и динамические. Эти категории определяются через понятие “ времени жизни” объекта. Объекты, продолжительность существования которых равна времени выполнения программы, называют статическими, а объекты, время жизни которых меньше времени выполнения программы, - динамическими. С понятием времени жизни [ГНС2] объекта связаны его создание и уничтожение. Объекты, идентифицируемые именем, всегда являются статическими. Статические объекты создаются на этапе компиляции программы, до окончания работы программы для них сохраняется однозначное соответствие между элементом хранения объекта и именем объекта, по окончании работы программы они прекращают свое существование. Динамические объекты идентифицируются только через указатели, создаются и уничтожаются они в процессе выполнения программы.

Распределение рабочего пространства оперативной памяти не является жестким, а происходит во время выполнения программы (см. рис. 14).

 
 


В нижних адресах располагаются системные программы. Выше располагается код исполняемого файла (файла с расширением.EXE), размер которого может превышать 64 К. Выполняемому файлу придается сегмент данных, размер которого не превышает 64 К. Далее располагается область системного стека, которая необходима для работы процедур и функций. Размер стека составляет не более 64 К. Стек заполняется от своей верхней границы по направлению к началу. Размер стека может быть назначен директивой $M. Выше стека располагается буфер для работы оверлеев – перекрывающихся частей программы. В верхних адресах оперативной памяти размещается куча (heap), необходимая для работы с динамическими объектами программы. Размером кучи пользователь может управлять при помощи директивы $M, которая имеет следующий формат:

{$M < stacksize >,< heapmin >,< heapmax > } – установить размеры памяти.

¨ < stacksize > - размер стека, изменяется от 1024 до 65520 байт;

¨ < heapmin > - минимальный размер динамической памяти, изменяется от 0

до 655360 байт;

¨ < heapmax > - максимальный размер динамической памяти, изменяется от

< heapmin > до 655360 байт.

Размеры памяти по умолчанию - {$M 16384,0,655360}.

Создание объекта следует рассматривать как выделение памяти под его элемент хранения. Согласно такому подходу рабочее пространство оперативной памяти подразделяется на три класса: статическая память, автоматическая память, динамическая память.

Статической памятью является сегмент данных размером не более 64 Кбайта, который выделяется каждой выполняемой программе. Элементы хранения объектов в статической памяти располагаются подряд в порядке их объявления в глобальной области программы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: