所在的位置: C++ >> C++优势 >> C11智能指针介绍

C11智能指针介绍

DSP广告投放运营招聘QQ群 http://nvrenjkw.com/nxzx/3902.html

智能指针主要用于管理在堆上分配的内存,它将普通的指针封装为一个栈对象。当栈对象的生存周期结束后,会在析构函数中释放掉申请的内存,从而防止内存泄漏。

auto_ptr智能指针:(C++11出来前只有这种智能指针)当对象拷贝或者赋值后,前面的对象就悬空了。unique_ptr智能指针:防止智能指针拷贝和复制。shared_ptr智能指针:通过引用计数的方式来实现多个shared_ptr对象之间共享资源。

weak_ptr智能指针:可以从一个shared_ptr或另一个weak_ptr对象构造,它的构造和析构不会引起引用记数的增加或减少。

注意:每一种智能指针都可以增加内存的引用计数。

智能指针分为两类:

一种是可以使用多个智能指针管理同一块内存区域,每增加一个智能指针,就会增加1次引用计数,另一类是不能使用多个智能指针管理同一块内存区域,通俗来说,当智能指针2来管理这一块内存时,原先管理这一块内存的智能指针1只能释放对这一块指针的所有权(ownershipownershipownership)。按照这个分类标准,auto_ptrunique_ptrweak_ptr属于后者,shared_ptr属于前者。对shared_ptr进行初始化时不能将一个普通指针直接赋值给智能指针,因为一个是指针,一个是类。可以通过make_shared函数或者通过构造函数传入普通指针。并可以通过get函数获得普通指针。

作者:山顶夕景学术范签约作者,CSDN博客专家,推荐算法工程师,专注于机器学习、深度学习

学术范(xueshufan.


转载请注明:http://www.aierlanlan.com/grrz/2514.html

  • 上一篇文章:
  •   
  • 下一篇文章: