Класс памяти
Класс памяти - свойство объекта размещенного в памяти (переменной), которое определяет продолжительность существования объекта (время жизни), тип компоновки (связывания) и другие атрибуты.
Для явного задания классов памяти используются следующие модификаторы:
1. auto – автоматическая или локальная память. Память под переменную с этим модификатором выделяется в стеке каждый раз при выполнении оператора, содержащего определение переменной. Освобождение памяти происходит при выходе из блока, в котором определена переменная. Время ее жизни — с момента описания до конца блока. Для глобальных переменных (переменных, объявленных вне блока), этот спецификатор не используется, а для локальных он принимается по умолчанию, поэтому задавать его явным образом большого смысла не имеет.
Блок – это последовательность объявлений, определений и операторов, заключенных в фигурные скобки {…}. Выделяют два типа блоков: составной оператор и тело функции.
2. register – регистровая память, аналогично auto, но память выделяется по возможности в регистрах процессора. Если такой возможности у компилятора нет, переменные обрабатываются как auto.
3. static – «статическая» память, внутренний тип компоновки, т.е. переменная доступна только в одном файле проекта, где она определена и статическая продолжительность существования, т.е. переменная существует в течение всего времени выполнения программы. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной.
4. extern – «внешняя» память, внешний тип компоновки, т.е. переменная доступна во многих файлах проекта, и статическая продолжительность существования.
Если класс памяти явно не определен, то для переменных, определенных вне блоков класс памяти – extern, а для определенных внутри блоков – auto.
Дата добавления: 2015-08-14; просмотров: 563;