首页 > 编程语言 > 详细

C++ 智能指针

时间:2019-03-11 16:48:05      阅读:123      评论:0      收藏:0      [点我收藏+]

  静态内存:局部static对象、类static成员、全局变量。

  栈内存:函数内非static对象。

  分配在静态或栈内存中的对象由编译器自动创建和销毁,对于栈对象,仅在其定义的程序块运行时才存在;static对象在使用之前分配,程序结束时销毁

  堆内存:用于动态分配,要显示销毁。

 智能指针

  智能指针定义在头文件memory中。

  shared_ptr类

  智能指针为模板,创建时需提供类型,默认初始化的智能指针中保存着一个空指针。

  make_shared函数

  使用make_shared函数分配使用动态内存,使用时与模板类相同,在函数名后跟尖括号给出类型名。

  通常可以用auto来定义对象保存make_shared的结果,例如:

  auto p = make_shared<int>(10);

  shared_ptr拷贝和赋值

  拷贝或赋值操作:

  auto p1(p);

  当拷贝一个shared_ptr时,引用计数的计数器会递增,当给shared_ptr赋一个新值或是销毁时,计数器会递减,当计数器为0时,会自动释放自己管理的对象。

  auto r = make_shared<int>(10);  //r指向的对象由一个引用者

    r=q;  //r指向别的对象,r原指的对象没有引用者,自动释放

 

  

  

C++ 智能指针

原文:https://www.cnblogs.com/wshr007/p/10511546.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!