Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Класс памяти информационного объекта




Класс памяти информационного объекта задает:

место его размещения (регистр, стек, сегмент данных, динамическая память и т.п.);

время жизни (постоянное или временное):

- объекты с локальной продолжительностью жизни

- объекты со статической продолжительностью жизни

- объекты с динамической продолжительностью жизни

область видимости – часть программы, из которой допустим обычный доступ к области памяти, связанной с именем объекта;

 

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

Класс памяти в С++ может быть установлен:

• синтаксисом определения (для этих целей используются спецификаторы);

• расположением в исходном коде;

• двумя этими факторами.

Спецификаторы класса памяти информационного объекта программы:

auto – спецификатор автоматического класса памяти, указывающий на то, что объект располагается в локальной (автоматически распределяемой) памяти и при необходимости инициализируется каждый раз при выполнении оператора; спецификатор используется в операторах определения переменных в теле функций, а также внутри блоков операторов; объекты, имена которых определяются со спецификатором auto, размещаются в локальной памяти непосредственно перед началом выполнения функции или блока операторов; при выходе из блока или при возвращении из функции, соответствующая область локальной памяти освобождается, и все ранее размещённые в ней объекты уничтожаются; таким образом, спецификатор влияет на время жизни объекта (оно локально); спецификатор auto используется редко, поскольку все объекты, определяемые непосредственно в теле функции или в блоке операторов и так по умолчанию располагаются в локальной памяти; вне блоков и функций этот спецификатор не используется;

register – ещё один спецификатор автоматического класса памяти; представляет из себя "ненавязчивую просьбу" к транслятору (если это возможно) о размещении значений объектов, объявленных с этим спецификатором в одном из доступных регистров, а не в локальной памяти; если по какой-либо причине в момент начала выполнения кода в данном блоке операторов регистры оказываются занятыми, транслятор обеспечивает с этими объектами обращение, как с объектами класса auto (очевидно, что в этом случае объект располагается в локальной области памяти);

extern – спецификатор внешнего статического класса памяти, обеспечивающий существование объекта с момента его объявления до конца выполнения программы и означающий, что объект определяется в другом месте программы (в другом файле или дальше по тексту); спецификатор extern используется для создания глобального объекта программы, доступного во всех файлах (модулях) программы, в которых он объявлен.

stаtic – спецификатор внутреннего статического класса памяти; применяется только(!) к именам объектов и функций и имеет в C++ два значения:

• первое означает, что определяемый объект располагается по фиксированному адресу (тем самым обеспечивается постоянное время жизни объекта с момента его определения до конца выполнения программы и его инициализация только один раз – при первом выполнении оператора, содержащего его определение);

• второе означает локальность, т.е. что объект, объявленный со спецификатором static, локален в данном программном модуле (то есть, недоступен из других модулей многомодульной программы) или в классе;

статические переменные могут быть локальными и глобальными, в зависимости от расположения оператора описания; глобальные статические переменные видны только в том файле (модуле), в котором описаны;

.

Спецификаторы auto и register относят к динамическим классам памяти, т.к. адреса объектов, описываемых с их помощью, будут меняться в процессе выполнения программы.

 





Поделиться с друзьями:


Дата добавления: 2016-12-06; Мы поможем в написании ваших работ!; просмотров: 410 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Сложнее всего начать действовать, все остальное зависит только от упорства. © Амелия Эрхарт
==> читать все изречения...

2221 - | 2094 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.