【C++干货铺】 RAII实现智能指针
=========================================================================
个人主页���击直达:小白不是程序媛
C++系列专栏:C++干货铺
代码仓库:Gitee
=========================================================================
目录
为什么需要智能指针?
内存泄漏
什么是内存泄漏,内存泄露的危害
内存泄漏的分类
堆内存泄漏(Heap leak)
系统资源泄露
如何避免内存泄漏
智能指针的使用及原理
RAII
智能指针的原理
std::auto_ptr
std::unipue_ptr
定制删除器
为什么需要智能指针?
下面我们先分析一下下面这段程序有没有什么内存方面的问题?
int div() { 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、如果div调用这里又会抛异常会如何? 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
The End