行业知识
【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