Очистка мифа в других ответах: нет, порядок очистки не имеет ничего общего со стеком.
Стандарт C ++ даже не определяет концепцию стека, за исключением двух обстоятельств:
- разматывание стека (как процесс).
- адаптер контейнера стека.
Здесь не имеет значения.Что имеет значение , хотя это относится к разделу 6.6:
При выходе из области действия (хотя и выполненной) объекты с автоматической продолжительностью хранения, созданные в этой области, уничтожаются в обратном порядке их построения .
Передача из цикла, из блока или обратно после инициализированной переменной с автоматическим сроком хранения включает уничтожение объектов с автоматическим сроком хранения, которые находятся вобласть видимости в точке, переданной, но не в точке, переданной.
Тот факт, что большинство архитектур реализуют это поведение с использованием стека выполнения, является «счастливым совпадением», но оно не предписано стандартом.
С другой стороны, уничтожение в обратном порядке гарантируется независимо от того, будет ли реализация использовать стек или нет.