C++ 中的智能指针
在 C++ 中,内存安全和内存泄露是最容易出现的问题,而对于前者,内存安全问题,很大程度上是由于指针的使用不当,比如直接访问未初始化的指针、通过指针访问以及被释放掉的对象等。为了解决这类问题,在 C++11 中,新增了一些现代化的指针工具,旨在替换原始的指针,实现更加智能化的内存数据管理,这些指针也叫智能指针(smart pointer)。
C++11 中新增的智能指针对象如下:
指针类别 | 备注 |
---|---|
unique_ptr |
拥有独有对象所有权语义的智能指针 |
shared_ptr |
拥有共享对象所有权语义的智能指针 |
weak_ptr |
到 std::shared_ptr 所管理对象的弱引用 |
https://juejin.cn/post/6844903993055920141
特点
- 这三个指针都定义在
memory
头文件下,使用时需要#include <memory>
,并处于std
中 - 智能指针会自动进行析构操作,当独占指针结束作用域,或共享指针引用计数为0时,会自动释放指针的对象
unique_ptr
C++ 中的智能指针