码迷,mamicode.com
首页 > 其他好文 > 详细

智能指针

时间:2017-10-26 11:40:18      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:table   span   解释   默认   关联   指针   16px   标准库   初始化   

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

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销毁前内存都不会释放

 

智能指针

标签:table   span   解释   默认   关联   指针   16px   标准库   初始化   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!