为堆栈分配的对象调用析构函数的机制是什么?

jbc*_*coe 2 c++ stack destructor

C++如何确保为堆栈分配的对象调用析构函数?当我分配动态内存时,析构函数(或指向它的指针)会发生什么,如下所示:

class MyClass {
public:

  ~MyClass()
  {
    std::cout<<"Destructor called."<<std::endl;
  }  

  MyClass()
  {
    std::cout<<"Constructor called."<<std::endl;
  }

};

....................................................................

//Limit scope for example
{
  MyClass instance;
}
Run Code Online (Sandbox Code Playgroud)

构造函数和析构函数都被调用.这里发生了什么?

ur.*_*ur. 7

编译器在适当的位置插入对对象的析构函数的调用.