C++中是没有内存回收机制的,我在之前的一篇文章中提到使用指针的一些基本方法。C++在std标准库中也提供了三种封装过的指针模版类,称作为智能指针:
- shared_ptr
- unique_ptr
- week_ptr
我这里没打算详细介绍这三个指针的使用方式,主要是想从上一篇文章中提到的,在使用指针的过程中,容易出现的几个问题,如果是用智能指针的话,可以如何去解决。当然,也首先要介绍一下这三个指针的基本逻辑。
智能指针的核心实现技术是引用计数,每使用它一次,内部引用计数加1,每析构一次内部的引用计数减1,减为0时,删除所指向的堆内存。
先从shared_ptr说起。
智能指针shared_ptr模版类
直接上一段demo代码:
#include <stdio.h>
#include <memory>
using namespace std;
//自定义释放规则
void deleteInt(int* p) {
printf("abdcd\n");
delete []p;
}
int main()
{
auto aPtr &