在 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
。
还是不行,得做深拷贝。假设我有一个对象 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
。