我正在编写一个 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/