Вызывает ли C ++ деструкторы для глобальных и classовых переменных?

Из моей примерной программы, похоже, она вызывает деструкторы в обоих случаях. В какой момент он вызывает деструкторы для глобальных и classовых переменных, поскольку они должны быть выделены в разделе данных стека программ?

Из § 3.6.3 стандарта C ++ 03:

Деструкторы (12.4) для инициализированных объектов времени статического хранения (объявлены в области блока или в области пространства имен) вызывается в результате возврата из основного и в результате вызова exit (18.3). Эти объекты уничтожаются в обратном порядке завершения их конструктора или завершения их динамической инициализации. Если объект инициализирован статически, объект уничтожается в том же порядке, как если бы объект был динамически инициализирован. Для объекта типа массива или classа все подобъекты этого объекта уничтожаются до уничтожения любого локального объекта со статическим временем хранения, инициализированным во время построения под-объектов.

Кроме того, в § 9.4.2 7 говорится:

Статические элементы данных инициализируются и уничтожаются точно так же, как нелокальные объекты (3.6.2, 3.6.3).

Однако, если деструктор не имеет наблюдаемого поведения, он не может быть вызван. Терри Махаффи подробно объясняет это в своем ответе на вопрос: «Является ли деструктор C ++ гарантированно не вызываться до конца блока?» ,

Где-то после “основного”

(вы не можете знать или полагаться на точный порядок, в котором они называются)

  • Ошибка компилятора: «Инициализатор не является константой времени компиляции»
  • Как создать глобальную переменную?
  • Какова продолжительность жизни глобальной переменной в excel vba?
  • Где разместить глобальные переменные в Rails 3
  • Объявлять глобальные переменные в Visual Studio 2010 и VB.NET
  • Являются ли глобальные переменные плохими?
  • Когда можно использовать глобальную переменную в C?
  • Почему переменная, определенная global, не определена?
  • Глобальные переменные ASP.NET MVC
  • Печать всех глобальных переменных / локальных переменных?
  • Почему глобальные и статические переменные инициализируются значениями по умолчанию?
  • Давайте будем гением компьютера.