我在C++析构函数中对垃圾收集有什么作用?

Nos*_*tap 3 c++ destructor memory-management smart-pointers raii

我正在编写一个C++析构函数(我希望这是正确的术语;我是C++的新手)并且我对垃圾收集的确切需要并不是肯定的.假设我有2个指针作为实例变量我需要垃圾收集吗?如果我有一个对象作为实例变量呢?或指向对象的指针?

对于究竟需要删除的内容以及自动清理的内容,我只是有点模糊.

谢谢

Sio*_*vok 11

一般的经验法则是...如果你打电话new,打电话delete.如果你打电话new[],打电话delete[].如果您正在访问类之外的这些指针并有效地共享它们,那么您将需要delete在共享对象仍处于使用状态时小心"拥有"对象.垃圾收集不是一个正确的术语.你想要destroy对象free及其内存.这是什么delete/ delete[]做什么.new/ new[]分配内存和construct对象.

在C++中,没有垃圾收集器.你必须"手动"处理它.这并不是说它是乏味的.你可能会开始使用智能指针为你处理一些逻辑.有关更多信息,请参阅此问题.