C++杂谈之一二三-智能指针

前言

  在接触到c一段时间之后,我们或多或少会了解到c++新版本的特性,目前传播比较广泛的是c++11,c++11增加了很多优秀的特性,包括lambda表达式、auto关键字、右值引用等等,其中还包括智能指针
  c++作为一门中级语言,在内存方面充分给与了开发者一定的自由度,但与此同时也带来了很多新的问题,野指针、内存泄漏等等,在捕捉到这些问题后,c++推出了一个新的模板类来帮助开发人员进行指针的管理,即智能指针。

为什么使用智能指针

  智能指针智能在哪里?为什么我要用它?
  答案很简单,智能指针帮助我们管理堆内存的释放,不用担心内存泄漏问题。而且不存在指向无效内存的智能指针,所以不存在野指针或者悬挂指针的问题。

三种智能指针

  智能指针分为三种shared_ptr(共享指针)、unique_ptr(独占式指针)、weak_ptr(弱引用指针)
  (1)其中shard_ptr作为共享指针,它的主要思想就在于允许多个智能指针指向同一块内存,如果当前内存没有智能指针再指向它的时候,它会被正确释放。
  (2)unique_ptr是一种独占式的指针,它只允许一块内存仅有一个智能指针能够指向,不存在有多个智能指针能够同时指向,它也会保证在作用域结束后,其指向内存被正确释放。
  (3)有了以上两个智能指针,基本上我们可以覆盖住日常的程序开发了,而weak_ptr是搭配shared_ptr使用的,其目的是为了解决shared_ptr的循环引用问题(会导致智能指针互相等待,从而引发内存不被正确释放,最终形成内存泄漏)。

小结

  以上就是c++11提供的智能指针的简单介绍,后面我准备分别以三篇文章介绍三种指针的简单使用和实现。咱们待会见~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值