Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Продолжительность существования





Продолжительность существования - это период, в течение которого идентификаторам в программе соответствуют конкретные объекты в памяти.

Определены три вида продолжительности: статическая, локальная и динамическая.

Объектам со статической продолжительностью существования память выделяется в начале выполнения программы и сохраняется до конца программы.

Статическую продолжительность имеют все функции и файлы.

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

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

Глобальные и статические переменные по умолчанию инициализируются нулями.

Если в функции имеется описание переменной со спецификатором extern, это означает, что эта переменная глобальная и ее определение дано в другом месте вне функции. Такая переменная имеет статическую продолжительность существования.

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

Объекты с динамической продолжительностьсуществования создаются и уничтожаются с помощью операторов в процессе выполнения программы по желанию программиста. Память таким переменным выделяется в области динамически распределяемой памяти, называемой кучей.

Для создания объекта используются операция new или функции malloc() и сalloc(), а для уничтожения - операция delete или функция free ().

Операция: new имя_типа или new имя_типа инициализатор

выделяет и делает доступным участок памяти для объекта данного типа и в выделенный участок заносит значение инициализатора, что не обязательно. Операция возвращает адрес первого байта выделенного участка, или нулевое значение в случае неудачи. Если надо определить динамическую переменную типа int, следует объявить указатель на int и ему присвоить результат операции new, например: int*r = new (15);

В дальнейшем доступ к выделенному участку памяти обеспечивается выражением *r.

Продолжительность существования выделенного участка – от точки создания до конца программы или до явного освобождения памяти операцией delete r;







Date: 2015-07-17; view: 473; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию