C++11新特性之智能指针

本文深入剖析C++11中的三种智能指针:unique_ptr(独占所有权)、shared_ptr(共享所有权)和weak_ptr(辅助管理)。unique_ptr不支持复制,适合单个所有者;shared_ptr通过引用计数实现共享,对象在无引用时自动删除;weak_ptr观察shared_ptr,不参与对象生命周期,需lock()访问。
摘要由CSDN通过智能技术生成

  这一节将从用法上、内存存储上以及生存周期上,对unique_ptr, shared_ptr和weak_ptr做一个深入剖析。

unique_ptr
  不共享它的指针。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动 unique_ptr。这意味着,内存资源所有权将转移到另一 unique_ptr,并且原始 unique_ptr 不再拥有此资源。我们建议你将对象限制为由一个所有者所有,因为多个所有权会使程序逻辑变得复杂。因此,当需要智能指针用于纯 C++ 对象时,可使用 unique_ptr,而当构造 unique_ptr 时,可使用 make_unique Helper 函数。
unique_ptr

shared_ptr
  引用计数的智能指针,用于共享对象的所有权。是C + +标准库中一个聪明的指针,是为多个拥有者管理内存中对象的生命周期而设计的。在你初始化一个 shared_ptr 后,你可以复制它,把函数参数的值递给它,并把它分配给其它 shared_ptr 实例。所有实例指向同一个对象,并共享访问一个“控制块”,即每当一个新的 shared_ptr 被添加时,递增和递减引用计数,超出范围,则复位。当引用计数到达零时,控制块删除内存资源和自身。

shared_ptr<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值