我想专注于当我们说删除ptr时会发生什么。我知道我们类的析构函数被调用,然后回收新分配的空间量。
如果我们的对象有其他指针等,那么它也会被回收,还是由我们的构造函数的定义来完成呢?
答案 0 :(得分:3)
析构函数负责清除对象拥有的所有资源。这包括在需要它的指针上调用delete
。如果你的析构函数没有这样做,那么你将得到内存泄漏。
如果您的对象具有自动存储持续时间的成员,则会自动调用这些成员的析构函数。这是RAII的基础。
答案 1 :(得分:2)
如果您删除的对象具有指向其他对象或内存块的指针,则为no,如果删除了对象,则不会自动删除这些对象。你必须自己照顾;适当的地方很可能是你对象类的析构函数。
如果您没有正确释放所有内存,那么您的程序会出现内存泄漏。
答案 2 :(得分:1)
取决于析构函数的定义(不是构造函数)。