“删除”如何回收内存?

时间:2011-12-20 11:54:26

标签: c++ memory-management

我想专注于当我们说删除ptr时会发生什么。我知道我们类的析构函数被调用,然后回收新分配的空间量。

如果我们的对象有其他指针等,那么它也会被回收,还是由我们的构造函数的定义来完成呢?

3 个答案:

答案 0 :(得分:3)

析构函数负责清除对象拥有的所有资源。这包括在需要它的指针上调用delete。如果你的析构函数没有这样做,那么你将得到内存泄漏。

如果您的对象具有自动存储持续时间的成员,则会自动调用这些成员的析构函数。这是RAII的基础。

答案 1 :(得分:2)

如果您删除的对象具有指向其他对象或内存块的指针,则为no,如果删除了对象,则不会自动删除这些对象。你必须自己照顾;适当的地方很可能是你对象类的析构函数。

如果您没有正确释放所有内存,那么您的程序会出现内存泄漏。

答案 2 :(得分:1)

取决于析构函数的定义(不是构造函数)。