在 C++ 中创建一个不泄漏内存和悬挂指针的浅拷贝

Create a shallow copy without leaking memory and dangling pointer in C++

还是不行,得做深拷贝。假设我有一个对象 A,我想将 A 的浅拷贝复制到 B 中。如果我删除 A,并且 A 销毁它的所有成员,那么 B 就会有悬空指针。如果 A 没有销毁其成员,那么 B 的指针仍然是好的。但是,如果我删除 B,那么当 B 被销毁时它的成员不会被销毁,所以我会泄漏内存。有没有办法让一个对象知道它何时拥有对内存的唯一引用,并删除它?或者这是不可能的,我必须使用深拷贝。

Is there a way for an object to know when it has the only reference to memory, and delete it?

是的,它叫做 std::shared_ptr