【发布时间】:2012-03-02 23:13:10
【问题描述】:
这个问题一直困扰着我,尤其是在我使用 Qt 编程时。
由于 Qt 使用对象所有权树,因此传递一个指针,例如通过myBoostSharedPtr.get() 可以隐式转移所有权。
现在考虑一些 Qt 对象被破坏并且整个对象树被破坏但智能指针仍然存在的情况,例如作为不同班级的成员。
如果智能指针之后被删除会怎样?
双重删除会带来所有令人讨厌的后果?
一些智能指针实现会阻止这种情况吗?
【问题讨论】:
-
我实际上遇到了
QSharedPointer的此类问题,它在概念上与boost 的shared_ptr非常相似。我写了一篇关于我的发现的博客文章:blog.codef00.com/2011/12/15/not-so-much-fun-with-qsharedpointer
标签: c++ qt smart-pointers