c++ - 我必须在 C++ 析构函数中收集什么垃圾

标签 c++ memory-management destructor smart-pointers raii

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

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

谢谢

最佳答案

一般的经验法则是...如果您调用new,请调用delete。如果您调用了 new[],请调用 delete[]。如果您在类之外访问这些指针并有效地共享它们,您需要小心“拥有”对象 delete 正在使用的共享对象。垃圾收集这个词不太合适。您想要销毁 对象并释放 它的内存。这就是 delete/delete[] 所做的。 new/new[] 分配内存并构造一个对象。

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

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

相关文章:

c++ - 大量对象导致 Segmentation Fault

C++ - 无法修改类成员函数中的指针

c++ - 分配的数组已归零

c++ - 默认析构函数问题,未检测到

c++ - 使用gdb,是否可以在静态对象销毁后添加断点?

c++ - 循环与操作顺序

android - 如何在 Android 中使用 std::stoul 和 std::stoull?

c++ - 扩展QMainWindow时将成员变量存储在堆或堆栈上?

c++ - 在实时环境中使用 C++ 预分配内存

c++ - C++中的销毁顺序