Effective C++ 之条款13-以对象管理资源

  概念:

      在C++中使用堆内存是非常频繁的操作,我们需要new去分配内存空间,用完了之后我们要delete释放它,堆内存的申请和释放都是由程序员自己手动完成的。程序员自己管理堆内存可以提高程序的效率,但是总体而言内存管理是一件十分复杂的事情,C++11中引入了智能指针的概念,方便管理堆内存。使用普通的指针,容易造成内存泄漏(忘记释放),二次释放,程序发生异常的时候内存泄漏,因此使用智能指针能够更好的管理堆内存。

    内存泄露:指的是申请完内存空间忘记释放,导致可用的内存越来越少。

    内存溢出:数据超过某一块内存的大小会修改到别的内存。

    new 关键字,假设T是一个类,那么我们常用下面的写法:

                          T*ptr = new T();

用new在上创建一个对象,发生了什么呢?具体过程如下:

    1)调用 operator new 分配内存空间,operator new (sizeof(T)) 

    2)   调用类的构造函数T()

    3)返回正确的指针

        智能指针和普通指针的区别是智能指针在普通指针的基础上加了一层封装机制,这样的一层封装机制的目的是为了智能指针可以很方便的管理一个对象的生命周期。

       为了理解智能指针基本工作原理,我们看一下下面的例子:

clas
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值