释放对象的内存 VS 终止管家?

release object's memory VS termination housekeeping?

我正在研究 Paul Deitel 的一本名为 "C++ How to Program" 的书,第 9 章正在谈论 类,我引用:

The destructor itself does not actually release the object's memory--it performs termination housekeeping before the object's memory is reclaimed, so the memory may be reused to hold new objects.

所以我的问题是,作者所说的终止管理和释放内存是什么意思?他们彼此之间有何不同?如果它们有任何不同。

意思是析构函数不释放内存,但它是一个可以声明需要做哪些管家函数的地方。例如,如果您的对象拥有指向它应该释放的其他数据的指针,那么是时候删除它们了。例如,如果您有一个名为 owned 的指针,它被赋予了要保留的内容:

MyThing::~MyThing() {
  delete owned;
}

这个 delete 调用将触发那个 owned 对象的析构函数(如果它有一个),它以递归的方式重新启动这个过程。

您还可以关闭文件句柄,删除临时文件,无论您的对象在整理时应该做什么。这可能还包括删除操作系统 GUI 元素,这实际上取决于此代码所在的位置。

析构函数在释放内存的过程中被调用,但它本身并没有释放自己的任何内存。该操作在析构函数完成后执行。

除了释放内存之外,还有其他形式的清理。有时您可能需要在 class 的终止符期间关闭通信通道。或者您可以在 class 关闭时释放用于线程的资源。或者,也许您只是修改一个指向的对象。

析构函数是当对象超出范围时运行的代码。没有别的了。