std::shared_ptr通过引用计数管理对象生命周期,需包含<memory>头文件并使用C++11及以上版本;推荐用std::make_shared创建,支持共享所有权与自动释放,注意避免循环引用。

在C++中,std::shared_ptr 是一种智能指针,用于实现共享所有权的内存管理。它通过引用计数机制自动管理动态分配对象的生命周期,当最后一个 shared_ptr 指向该对象时,对象会被自动释放,避免内存泄漏。
使用 shared_ptr 需要包含 <memory> 头文件:
#include <memory>确保使用 C++11 或更高版本(shared_ptr 从 C++11 引入)。
推荐使用 std::make_shared 来创建 shared_ptr,效率更高且更安全:
立即学习“C++免费学习笔记(深入)”;
auto ptr1 = std::make_shared<int>(42);也可以从裸指针构造(不推荐直接用裸指针,除非必要):
int* raw = new int(10);多个 shared_ptr 可以指向同一个对象,每增加一个副本,引用计数加1:
auto sp1 = std::make_shared<int>(100);调用 use_count() 可查看当前引用数量(调试用,不要依赖于性能关键代码)。
当最后一个 shared_ptr 被销毁或重置时,所管理的对象会自动删除:
{ auto data = std::make_shared<std::vector<int>>();reset() 可以显式释放资源或将指针指向新对象:
auto p = std::make_shared<int>(5);shared_ptr 支持类似普通指针的操作:
auto person = std::make_shared<std::pair<std::string, int>>("Alice", 25);两个 shared_ptr 相互持有会导致引用计数永不归零,造成内存泄漏。应使用 std::weak_ptr 打破循环:
struct Node {基本上就这些。合理使用 shared_ptr 能显著提升代码安全性与可维护性。
以上就是c++++怎么使用shared_ptr_C++共享智能指针shared_ptr使用指南的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号