两个智能指针之间的引用
References between two smart pointers
正在阅读此堆栈流答案:
QWeakPointer-你感觉到重复出现的模式吗?正如std::weak_ptr和boost::weak _ptr这与QSharedPointer当您需要两个智能指针之间的引用时否则会导致您的对象永远不会被删除。
我的问题是,有人能在一个简单的例子中向我解释这种情况吗?当两个引用智能指针可能导致未删除的对象时?
提前谢谢。。
在以下示例中,两个S
对象都不会被销毁,因为a
指向的对象拥有b
指向的对象,反之亦然。
struct S {
std::shared_ptr<S> p;
};
void f()
{
std::shared_ptr<S> a(new S());
std::shared_ptr<S> b(new S());
a->p = b;
b->p = a;
}
CCD_ 4用于中断参考循环。如果已知对象的生存期超过了非拥有指针的生存期,那么也可以使用原始指针。
同样的原理也适用于Qt的智能指针,比如QWeakPointer
。
相关文章:
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- AVX 指令中寄存器和指针之间的客观差异
- 为什么不同类型层次结构的指针之间的dynamic_cast定义得很好?
- 介于 [固定数组] 和 [带内存分配的指针] 之间的性能
- 类指针之间的 Qt 差异
- 指向 POD 类型的指针之间的静态转换与重新解释转换
- 按值和引用传递指针之间的区别?
- 可以在指向不同模板类实例的指针之间进行强制转换吗
- 函数指针和传递指针之间的区别
- 作为 int 传递和类内部指针之间的差异给我带来了分段错误
- 比较C 中移动和智能指针之间的习惯
- 无效指针和非初始化的指针之间的差异
- 拉链比较整数和指针之间
- 指针数组(*a)[]和双指针** a之间的差异
- ->运算符和指针 * 之间的区别 (C++)
- 在 c++ 中,指向 int 的指针和指向指向 int 的指针之间的区别是什么?
- 指针之间的强制转换运算符
- 函数对象和函数指针之间的差异
- 指针之间的运算符重载
- 两个指针之间的差异是合法的 c++17 常量表达式