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

  1. Local variables are allocated on the Stack.

  2. The Stack is based on a LIFO (Last-In-First-Out) pattern.

  3. 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)

Stack scheme