智能指针AutoPtr,ScopedPtr的模拟实现

智能指针: 所谓智能指针就是智能/⾃动化的管理指针所指向的动态资源的释放
为什么我们会有智能指针呢,我们通过下面的代码来看一下

 void DoSomeThing ()
 {   
        throw 2 ;   
 } 
void Test2 () 
{ 
       int* p1 = new int(2);     
  try 
  {     
     DoSomeThing();   
  }   
  catch(...)   
  {          

    throw;   
  }   
   delete p1 ; 
 }

我们下来可以尝试一下这个程序,尝试过的同学会知道这个程序在调试中没有报错,但是在运行的时候就会崩溃,那么这个是什么原因呢?
原因是我们在开辟了空间遇到了异常,throw是抛出异常,我们都知道在抛出异常后面的代码都不会继续执行,所以这里我们的错误在于没有释放空间

这里我们就要使用智能指针首先我们介绍一下
智能指针是一个模版类
它的目的:
1,管理指针指向对象的释放间隔
2,可以像指针一样用起来(这里我们会用到重载)

我们先说一下RAII
RAII(Resource Acquisition Is Initialization)
资源分配即初始化,定义⼀个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值