Поделиться через


Время существования

"Время существования" период во время выполнения программы, в которой переменная или функция существует.Длительность хранения идентификатора задает время существования.

Идентификатор объявленный с storage-class-specifier Статический имеет длительность статического хранилища.Идентификаторы с также вызванная длительность статического хранилища ("глобальным") имеют указанное значение в хранилище и длительность программы.Хранение зарезервирован и значение идентификатора, хранящихся инициализировано только один раз перед запуском программы.Идентификатор объявленный с внешней компоновкой или внутренним также имеет длительность статического хранилища (см. связь).

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

Следующие правила определяют, имеет ли идентификатор глобальное (статический) или локально (автоматическое), время существования:

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

  • Если локальная переменная имеет инициализатор, то она инициализирована при каждом ее создания (если не объявлена как Статический).Параметры функции также имеют локальное время существования.Можно определить глобальное время существования идентификатора в пределах блока, включив Статический описатель хранени-класса в его объявлении.Как только он объявлен. Статическийпеременная сохраняет свое значение из одной записи блока к другому.

Хотя идентификатор с глобальным временем существования существует на протяжении выполнения программы источников (например, внешнее объявленная переменная или локальная переменная с объявленным Статический ключевое слово), он не может быть видимым во всех частях программы.См. Область и " видимость " дополнительные сведения о видимости, см. Классы запоминающих устройств обсуждение storage-class-specifier нетерминально.

Память может быть выбран в качестве необходимых (dynamic), если создается с помощью специальных процедур в библиотечных malloc.Поскольку динамическое выделение памяти использует библиотечные процедуры, не считается частью языка.См. malloc функция Справочник по библиотеке времени выполнения.

См. также

Основные понятия

Время существования, область видимости, и переключателя