8

Consider the following code:

{
  std::auto_ptr<Something> p1(pSomePointer);
  std::auto_ptr<Something> p2(pSomeOtherPointer);
  ...
}

Is there any guarantee that p2 destructor will be called before p1's when exiting the scope? Common sense says that the stack variables should be destroyed from top of the stack first but C++ compiler can reorder assignments.

1 Answers1

11

Yes, they are destroyed in order opposite to the construction order - objects constructed last will be destroyed first. C++ guarantees this.

sharptooth
  • 167,383
  • 100
  • 513
  • 979