C++ local variable destruction order

gexicide picture gexicide · Feb 4, 2013 · Viewed 18.4k times · Source

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?

Answer

James Kanze picture James Kanze · Feb 4, 2013

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