首页 > 其他 > 详细

智能指针

时间:2017-10-26 10:57:31      阅读:253      评论:0      收藏:0      [点我收藏+]

一、智能指针类型&智能指针

1. 标准库提供了两种智能指针类型(来管理动态分配的对象)

2. 智能指针

  智能指针就是一个变量、一个对象,即智能指针类型的实例化(比如在整型 int 和变量 i 中,智能指针就类似 i)

3. 智能指针与指针

  智能指针的行为类似常规指针

  区别:智能指针负责自动释放所指向的对象

4. 两种智能指针的区别

智能指针类型 特点
shared_ptr 允许多个指针指向同一个对象
unique_ptr 该类型指针“独占”所指向的对象

 

二、shared_ptr

1. 形式

shared_ptr<T> p;

解释:创建一个智能指针时,必须提供额外的信息——指针可以指向的类型

2. 默认初始化

  智能指针中保存着一个空指针

3. 初始化

shared_ptr<T> p = make_shared<T>(args)

shared_ptr<int> p1(new int 100)

shared_ptr<int> p2(p)

4. 每个 shared_ptr 都有一个关联的计数器,也称引用计数(记录有多少个 shared_ptr 指向相同的对象)

  初始化一个shared_ptr对象后,其引用计数为1

  当一个shared_ptr对象的计数器变为0时,它就会自动释放自己所管理的对象(即释放内存)

5. 备注

在最后一个shared_ptr销毁前内存都不会释放

 

智能指针

原文:http://www.cnblogs.com/xzxl/p/7735582.html

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