TR1 smart pointer

    TR1里提供了两种smart pointer, shared_ptr和weak_ptr。shared_ptr通过引用计数管理资源,而weak_ptr主要是为了避免死锁问题。

    shared_ptr有一个get成员函数,可以得到内部的资源指针。weak_ptr没有这样的函数,所以如果需要从weak_ptr里得到资源指针,必须先把weak_ptr转化为shared_ptr,可以通过构造函数和weak_ptr的lock成员函数来实现,两者的区别是,如果weak_ptr已经过期,构造函数会抛出异常,而lock函数不会。所谓过期(expired),是指weak_ptr指向的资源已经被释放了。可以通过weak_ptr的expired函数来确定它是否已经过期。

    use_count,reset和swap等成员函数,意义都很明显。use_count是当前拥有该资源的引用计数,reset是释放所有权,swap是交换所有权。

    shared_ptr在构造函数里面可以指定一个deleter,当引用计数为0时,通过deleter来释放资源。如果没有指定deleter,则使用默认的delete操作符删除内部的指针。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值