标签: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