智能指针的进步史(Auto_ptr-----scoped_ptr--------------shared_ptr(weak_ptr))

本文探讨智能指针的引入,旨在解决内存回收问题,特别是应对异常情况下的内存管理。文章介绍了RAII原则,并概述了智能指针的发展,包括Auto_Ptr的浅拷贝问题,以及Boost库中的scoped_ptr、shared_ptr和weak_ptr。shared_ptr通过引用计数解决拷贝问题,而weak_ptr用于解决循环引用导致的内存泄漏。
摘要由CSDN通过智能技术生成

为什么会有智能指针

之所以引出智能指针是为了解决内存回收问题,就拿抛异常-捕获异常的场景来说吧,我们知道异常捕捉的时候会引起执行流的乱跳,所以假如有些空间是new或者malloc出来的那么我们就要手动的释放,而不确定哪里会捕捉到异常也同样不确定最终异常是否被捕捉,所以为了避免内存泄露,我们就会抛异常时候进行释放,无异常也要释放,但是这仍然有疏漏,有的时候会释放多次,我们就想怎样让这些空间不用的时候就自动释放?

智能指针的发展

说到智能指针,我们就不得不提一提RAII

RAII:资源分配即初始化,及定义一个类专门来管理资源的分配和释放
智能指针就是RAII的实例,

智能指针的思想:
1、借助构造函数来保存资源,无论是否有异常抛出,出了作用域就会自己调用析构函数释放空间
2、智能指针就要像指针一样,具有*和->的功能,代码中会封装这两个功能

1、Auto_Ptr(c++98)

这种的指针是最原始的,主要说一下它的赋值运算、以及拷贝构造,因为在这两种情况下会产生浅拷贝的问题,导致释放空间多次,他有两种解决方案:
一、使用管理权转移
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值