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

标签 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;
}

构造函数和析构函数都被调用。这是怎么回事?

最佳答案

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

关于c++ - 为堆栈分配的对象调用析构函数的机制是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1362328/

相关文章:

c++ - 从 C 或 C++ 程序运行 ruby​​ 脚本

c++ - 这是违法的吧?

c - 汇编 - 如何找到一个函数为自己分配了多少堆栈空间

c++ - 在 C++ 中,哪个析构函数被调用?

c++ - 在 C++ 中删除 vector 的单个元素的问题

c++ - 如何在 z/OS 上的 C++ 中使用 C 套接字 API

c++ - 具有可变参数的虚方法

java - stack.clear() 更快还是弹出每个元素更快?

assembly - 如何将 NASM "push byte"转换为 GAS 语法?

c++ - 合成析构函数是否会破坏堆上分配的内存?