我正在编写一个 C++ 析构函数(我希望这是正确的术语;我是 C++ 的新手)并且我对垃圾收集到底需要什么并不乐观。假设我有 2 个指针作为实例变量,我需要对它们进行垃圾收集吗?如果我有一个对象作为实例变量呢?还是指向对象的指针?

我对究竟需要删除什么以及自动清理什么有点模糊。

谢谢

最佳答案

一般的经验法则是...如果您调用 new ,请调用 delete 。如果您调用 new[] ,请调用 delete[] 。如果您在类之外访问这些指针并有效地共享它们,您将需要小心“拥有”对象 delete 在共享对象仍在使用时。垃圾收集并不是一个恰当的术语。您想对对象进行 destroy 并对其内存进行 free。这就是 delete/delete[] 所做的。 new/new[] 分配内存和 construct 一个对象。

在 C++ 中,没有垃圾收集器。您必须“手动”处理它。这并不是说这一切都很乏味。您可能会开始使用 智能指针 来为您处理其中的一些逻辑。有关更多信息,请参阅 this question

关于c++ - 我必须在 C++ 析构函数中进行垃圾收集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9074496/

10-09 06:22