我正在阅读安全的 C++,作者提到了如下循环引用。
考虑两个包含彼此指针的对象
class A;
class B { public: A* a; };
class A { public: B* b; };
这种情况被称为“循环引用”。指向 A 和 B 的指针存在,但如果没有其他指针指向来自其他地方的这些对象中的至少一个,则无法为任一变量回收内存,因此会造成内存泄漏。这两个对象将永远幸福地生活,永远不会被摧毁。
我的问题
- 为什么会出现内存泄漏?为什么在相应类的析构函数中删除内存是个坏主意?
- 作者在什么基础上提到两个物体从此存在?
感谢您的时间和帮助