智能指针

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++编程经验:智能指针 -- 裸指针管得了的我要管,裸指针管不了的我更要管!

C++编程经验:智能指针 -- 裸指针管得了的我要管,裸指针管不了的我更要管!

Qt 智能指针学习(7种QT智能指针和4种std智能指针)

智能指针 与 oc中的指针

C11新特性之智能指针

C++|深入理解智能指针