Search code examples
c++c++11destructorlocal-variables

C++ local variable destruction order


Is there a defined order in which local variables are deallocated in C++ (11) ? To be more concise: In which order will side effects of the destructors of two local variables in the same scope become visible?

e.g.:

struct X{
  ~X(){/*do something*/}
}

int main(){
   X x1;
   X x2;
   return 0;
}

Is x1 or x2 destroyed first when main returns or is the order undefined in C++11?


Solution

  • Within each category of storage classes (except dynamically allocated objects), objects are destructed in the reverse order of construction.