为什么会有智能指针
之所以引出智能指针是为了解决内存回收问题,就拿抛异常-捕获异常的场景来说吧,我们知道异常捕捉的时候会引起执行流的乱跳,所以假如有些空间是new或者malloc出来的那么我们就要手动的释放,而不确定哪里会捕捉到异常也同样不确定最终异常是否被捕捉,所以为了避免内存泄露,我们就会抛异常时候进行释放,无异常也要释放,但是这仍然有疏漏,有的时候会释放多次,我们就想怎样让这些空间不用的时候就自动释放?
智能指针的发展
说到智能指针,我们就不得不提一提RAII
RAII:资源分配即初始化,及定义一个类专门来管理资源的分配和释放
智能指针就是RAII的实例,
智能指针的思想:
1、借助构造函数来保存资源,无论是否有异常抛出,出了作用域就会自己调用析构函数释放空间
2、智能指针就要像指针一样,具有*和->的功能,代码中会封装这两个功能
1、Auto_Ptr(c++98)
这种的指针是最原始的,主要说一下它的赋值运算、以及拷贝构造,因为在这两种情况下会产生浅拷贝的问题,导致释放空间多次,他有两种解决方案:
一、使用管理权转移
当