Типы размещения

Спецификаторы

  • (no specifier) - автоматическое
  • static - статическое (внутреннее связывание)
  • extern - так же статическое (внешнее связывание)
  • thread_local - тред-локальное размещение

Автоматическое размещение

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

Статическое размещение

Память под объект аллоцируется перед исполнением программы и деаллоцируется в конце.

Если переменная со статическим размещением не инициализируется разработчиком, то она будет проинициализирована нулем соответствущего типа.

Тред-локальное размещение

Память под объект аллоцируется при создании потока и деаллоцируется при его завершении. Каждый поток обладает собственным экземпляром объекта.

Динамическое размещение

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

(не уверен в последнем пункте, так как не силен за shared memory).