C++ local variable destruction order
Within each category of storage classes (except dynamically allocated objects), objects are destructed in the reverse order of construction.
I. About local variables
Local variables are allocated on the Stack.
The Stack is based on a
LIFO
(Last-In-First-Out
) pattern.So variables are destroyed and deallocated in the reverse order of allocation and construction.
II. About your example
Your function main()
is called:
x1
is allocated and constructed on the Stack,x2
is allocated and constructed on the Stack
and when the end of the main()
function scope is reached:
x2
is destroyed and deallocated from the Stack,x1
is destroyed and deallocated from the Stack
III. Moreover
The Stack look like this:
(Behaviour of the Stack seems more understandable with a scheme)