C++11——智能指针
今天面试问到了这个
一、为什么要用智能指针
简单来说,由于异常会使得程序的执行流乱跳,因此就会容易产生内存泄漏等问题。因此就要智能指针来解决了。
二、智能指针原理(RAII )
简单来说,智能指针就是一个类,但我们使用时可以把这个类的对象像指针一样使用。而也正是因为智能指针是一个自定义类型的类,因此无论程序正常结束还是因为抛异常的原因跳到其他栈帧里去,只要程序离开了当前的栈帧,那么该栈帧里的所有自定义类型对象都会调用其析构函数,智能指针也不意外,于是当智能指针调用析构函数时,就会顺便把自己管理的内存也给释放了。因此无论程序的执行流怎么跳,被智能指针管理的内存都会在程序离开栈帧时被智能指针自动释放。于是我们再也不用担心程序内存泄漏啦!
智能指针