logo
volkov / C++ / Бьерн Страуструп-Справочное руководство по С++

R.3.5 Классы памяти

Существует два описываемых класса памяти: автоматический и статический.

Автоматические объекты становятся локальными при передаче

управления в каждый блок.

Статические объекты существуют и сохраняют свое значение во все

время выполнения программы.

Автоматические объекты инициализируются ($$R.12.1) всякий раз,

когда управление переходит в блок, где они определены и уничтожаются

($$R.12.4) по выходе из этого блока ($$R.6.7).

Поименованный автоматический объект не должен быть уничтожен

до окончания его блока, точно так же, как не может быть исключен

поименованный автоматический объект класса, имеющего конструктор

или деструктор с побочным эффектом, даже если кажется, что этот

объект не используется.

Аналогично, глобальный объект класса с конструктором или

деструктором, имеющими побочный эффект, не может быть исключен,

даже если кажется, что он не используется.

Статические объекты инициализируются и уничтожаются в

соответствии с описанием в $$R.3.4 и $$R.6.7. С некоторыми объектами

не связано никакого имени, см. $$R.5.3.3 и $$R.12.2. Все глобальные

объекты имеют класс памяти статический. Локальным объектам и членам

класса можно предать класс памяти статический с помощью явного

использования спецификации класса памяти static ($$R.7.1.1).