智能指针
Posted GGBeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能指针相关的知识,希望对你有一定的参考价值。
一、智能指针类型&智能指针
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销毁前内存都不会释放
以上是关于智能指针的主要内容,如果未能解决你的问题,请参考以下文章
C++编程经验:智能指针 -- 裸指针管得了的我要管,裸指针管不了的我更要管!