析构函数和删除

bit*_*bit 1 c++ destructor

我有一个C++类MyClass.它包含一个构造函数,析构函数和一个int指针private: int *MyPtr;.

在某个地方,我动态分配一个MyClass对象:

MyClass *my = new MyClass(); //...
Run Code Online (Sandbox Code Playgroud)

然后我打电话 delete my;

应该MyClass有一个使用类似的析构函数delete MyPtr?或者,当我打电话时MyPtr被摧毁了delete my吗?

bil*_*llz 5

如果你分配了MyPtr insid MyClass构造函数,那么你有责任删除它.否则,如果删除未分配的内存,则会导致未定义的行为.

一个惯用的方法是在类中使用智能指针,如果你需要动态分配内存并删除它,智能指针将为你调整内存释放.

probaby值得一读:三个规则