C++_智能指针

使用一般指针,new申请资源后,在使用完资源后需要使用delete进行资源释放,需要程序员自行操纵。如果程序员申请资源后忘了对资源进行释放,将会引入内存泄漏问题;即使程序员没有忘记释放资源,如果程序逻辑在new之后、delete之前异常退出当前段落,依然会造成内存泄漏。

智能指针类似于一般指针,但拥有自己的析构函数,当智能指针结束生命周期,会自行调用析构函数进行资源释放,不必程序员操作进行资源释放。

 

C++中的四个智能指针: shared_ptr、unique_ptr、weak_ptr、auto_ptr

shared_ptr实现共享式拥有概念。多个智能指针指向相同对象,该对象和其相关资源会在最后一个引用被销毁时被释放。其内存在一个计数器,记录指针拥有者的数量,每多一个拥有者计数加1,每减少一个拥有者计数减1,当计数值为0时,调用析构函数释放资源。


unique_ptr实现独占式拥有概念,保证同一时间内只有一个智能指针可以指向该对象。


weak_ptr 是一种共享但不拥有对象的智能指针, 它指向一个 shared_ptr 管理的对象,是对shared_ptr指针的补充,使用weak_ptr共享指针,但是不会使指针计数器增加或者减少。用来解决shared_ptr相互引用时的死锁问题。


auto_ptr采用所有权模式,C++11中已经抛弃。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值