std::shared_ptr通过引用计数管理对象生命周期,强引用计数控制对象销毁,弱引用计数避免循环引用,使用控制块存储计数信息,make_shared提升性能,多线程下计数操作原子但对象访问需额外同步。

在C++中,std::shared_ptr 是一种智能指针,用于实现共享所有权的动态对象管理。它的核心机制是引用计数,通过自动追踪有多少个
shared_ptr
每个
shared_ptr
shared_ptr
weak_ptr
当最后一个
shared_ptr
控制块通常在以下情况被创建:
立即学习“C++免费学习笔记(深入)”;
std::make_shared<T>()
shared_ptr
多个
shared_ptr
std::shared_ptr<int> p1 = std::make_shared<int>(42); std::shared_ptr<int> p2 = p1; // 引用计数从1变为2
此时,控制块中的强引用计数为2。当
p1
p2
引用计数的增减发生在以下操作中:
shared_ptr
shared_ptr
这些操作都是原子的(在多线程环境下),确保引用计数线程安全。但注意:指向的对象本身并不自动线程安全,需额外同步。
当两个或多个对象通过
shared_ptr
struct Node {
std::shared_ptr<Node> parent;
std::shared_ptr<Node> child;
};
如果
a->child = b; b->parent = a;
解决方法是使用
std::weak_ptr
lock()
shared_ptr
基本上就这些。引用计数是
shared_ptr
以上就是C++ shared_ptr机制 引用计数详细解析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号