小工具知识网

当前位置: 首页 > 行业知识 > 【C++干货铺】 RAII实现智能指针

行业知识

【C++干货铺】 RAII实现智能指针

2026-11-07 16:36:26 来源:互联网转载

=========================================================================

个人主页���击直达:小白不是程序媛

C++系列专栏:C++干货铺

代码仓库:Gitee

=========================================================================

目录

为什么需要智能指针?

内存泄漏

        什么是内存泄漏,内存泄露的危害

内存泄漏的分类

堆内存泄漏(Heap leak)

系统资源泄露

如何避免内存泄漏

智能指针的使用及原理

RAII

智能指针的原理

std::auto_ptr

std::unipue_ptr

 std::shared_ptr

std::shared_ptr的循环引用

定制删除器


为什么需要智能指针?

下面我们先分析一下下面这段程序有没有什么内存方面的问题?

int p(){int a, b;cin >> a >> b;if (b == 0)throw invalid_argument("除0错误");return a / b;}void Func(){// 1、如果p1这里new 抛异常会如何?// 2、如果p2这里new 抛异常会如何?// 3、如果p调用这里又会抛异常会如何?int* p1 = new int;int* p2 = new int;cout  b;if (b == 0)throw invalid_argument("除0错误");return a / b;}void Func(){SmartPtr sp1(new int);SmartPtr sp2(new int);cout 

上一篇:怎么彻底删除布丁头条?

下一篇:在Docker中为Nginx容器添加多端口映射的详细指南