C++智能指针——shared_ptr的使用

1.智能指针介绍

在C++中,动态内存的管理是通过成对运算符new和delete来完成的。new在动态内存中为对象分配空间并返回一个指向该对象的指针,可以选择对对象进行初始化;delete接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。因为动态内存的申请和释放都是由程序员自己管理的,容易导致堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题。

因此,引入了智能指针的概念,通过智能指针来管理,析构的时候会自动释放其内存。

C++11标准库提供了三种智能指针(smart pointer)类型来管理动态对象,包含在头文件<memory>中,shared_ptr、weak_ptr和unique_ptr(auto_ptr或已废弃)。

  • shared_ptr控制对象的生命期。允许多个指针指向同一个对象,每使用它一次,引用计数+1,即强引用;
  • weak_ptr不控制对象的生命期。它也是一个引用计数型智能指针,但是它不增加对象的引用计数,即弱引用。但是它知道对象是否还活着。如果对象还活着,那么它可以提升为有效的shared_ptr;如果对象已经死了,提升会失败,返回一个空的shared_ptr。即 weak_ptr只是提供了对管理对象的一个访问手段
  • unique_ptr则"独占"所指向的对象。与所指对象的内存紧密地
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值