Effective C++ 第十三条 Use object to manage resources.
以对象管理资源
正常情况下,我们通常采用指针管理资源,如下
一般来说,这样是大多数人的正常操作,但是考虑到一些特殊情况,比如在实例中未写出来的 statements 中可能有其他语句会导致控制流在执行 delete ptr; 之前离开函数 fun 而造成资源浪费。所以当前有解决方案是使用对象来管理资源,在本例子中,就是使用智能指针来管理资源。
智能指针如 auto_ptr、shared_ptr 都是类封装的指针,有析构函数,无论在函数 fun 中是否提前结束,在程序结束之前,对象 ptr 就会执行析构函数从而释放资源,相较于普通指针,智能指针更为安全。
注意:在现在的标准中 auto_ptr 已经废弃了,不再使用了。
关于智能指针的介绍这里推荐看 现代C++教程,https://changkun.de/modern-cpp/zh-cn/05-pointers。