Время существования
"Время существования" период во время выполнения программы, в которой переменная или функция существует.Длительность хранения идентификатора задает время существования.
Идентификатор объявленный с storage-class-specifier Статический имеет длительность статического хранилища.Идентификаторы с также вызванная длительность статического хранилища ("глобальным") имеют указанное значение в хранилище и длительность программы.Хранение зарезервирован и значение идентификатора, хранящихся инициализировано только один раз перед запуском программы.Идентификатор объявленный с внешней компоновкой или внутренним также имеет длительность статического хранилища (см. связь).
Идентификатор не объявлена Статический описатель хранени-класса имеет автоматическую длительность хранения если объявлено в функции.Идентификатор с автоматическим длительностью хранения ("локальным идентификатором") имеет определенное значение и хранение данных только в пределах блока, в котором определен или объявлен идентификатор.Автоматический идентификатор выбранного новое хранилище каждый раз, когда ввод программы, которые блокируют и его срока хранения (а также его значение), если выйти из программы.Идентификаторы, объявленные в функции без компоновки также имеют автоматическое длительность хранения.
Следующие правила определяют, имеет ли идентификатор глобальное (статический) или локально (автоматическое), время существования:
Все функции имеют фиксированное время существования.Поэтому они существуют все время во время выполнения программы.Идентификаторы, объявленные во внешнем уровне (то есть за пределами блоков в программе на том же уровне определений функций) всегда имеют глобальные статические (), время существования.
Если локальная переменная имеет инициализатор, то она инициализирована при каждом ее создания (если не объявлена как Статический).Параметры функции также имеют локальное время существования.Можно определить глобальное время существования идентификатора в пределах блока, включив Статический описатель хранени-класса в его объявлении.Как только он объявлен. Статическийпеременная сохраняет свое значение из одной записи блока к другому.
Хотя идентификатор с глобальным временем существования существует на протяжении выполнения программы источников (например, внешнее объявленная переменная или локальная переменная с объявленным Статический ключевое слово), он не может быть видимым во всех частях программы.См. Область и " видимость " дополнительные сведения о видимости, см. Классы запоминающих устройств обсуждение storage-class-specifier нетерминально.
Память может быть выбран в качестве необходимых (dynamic), если создается с помощью специальных процедур в библиотечных malloc.Поскольку динамическое выделение памяти использует библиотечные процедуры, не считается частью языка.См. malloc функция Справочник по библиотеке времени выполнения.