读书笔记《Effective c++》 条款13 以对象管理资源
2018-01-09 16:39
405 查看
所谓资源就是,一旦用了它,将来必须还给系统。
本书出版较早,所以书中介绍的是auto_ptr和tr1::shared_ptr,而在现在c++11中完善了原来的auto_ptr,增加了几种智能指针,这方面资料很多,这里只引用别人的一篇文章:
http://blog.csdn.net/zy19940906/article/details/50470087
智能指针就是所谓的RAII“资源获得及初始化”,也就是每笔资源在获得的同事立刻被放进管理对象中,这样的好处是当离开资源的作用域后,智能指针会自动释放资源,而不需要管在函数是否提前return之类的事情。
补充:
关于new,delete,new[],delete[],关键是要配对使用,new[]然后用delete释放在有些情况下不会有问题(这里不介绍了),但是,还是不要这么做,找了篇文章讲的比较详细了:
http://blog.csdn.net/hazir/article/details/21413833
所以如果是指向数组的shared_ptr,一定要提供delete函数,否则就和用new[]然后用delete释放一个效果了。
unique_ptr不一样,它直接就支持数组类型,可以直接写成unique_prt<Test[]>
本书出版较早,所以书中介绍的是auto_ptr和tr1::shared_ptr,而在现在c++11中完善了原来的auto_ptr,增加了几种智能指针,这方面资料很多,这里只引用别人的一篇文章:
http://blog.csdn.net/zy19940906/article/details/50470087
智能指针就是所谓的RAII“资源获得及初始化”,也就是每笔资源在获得的同事立刻被放进管理对象中,这样的好处是当离开资源的作用域后,智能指针会自动释放资源,而不需要管在函数是否提前return之类的事情。
补充:
关于new,delete,new[],delete[],关键是要配对使用,new[]然后用delete释放在有些情况下不会有问题(这里不介绍了),但是,还是不要这么做,找了篇文章讲的比较详细了:
http://blog.csdn.net/hazir/article/details/21413833
所以如果是指向数组的shared_ptr,一定要提供delete函数,否则就和用new[]然后用delete释放一个效果了。
unique_ptr不一样,它直接就支持数组类型,可以直接写成unique_prt<Test[]>
相关文章推荐
- 读书笔记《Effective C++》条款13:以对象管理资源
- Effective C++ 条款13:以对象管理资源
- Effective C++ 条款13/14 以对象管理资源 || 在资源管理类中小心拷贝行为
- effective c++ 条款13 以对象管理资源
- effective C++ 条款 13:以对象管理资源
- Effective C++ 条款13学习笔记:以对象管理资源
- Effective C++_笔记_条款13_以对象管理资源
- 【Effective c++】条款13:以对象管理资源
- Effective C++ -----条款13:以对象管理资源
- effective C++ 读书笔记 条款14 以对象管理资源
- 《Effective C++》学习笔记条款13 以对象管理资源
- effective C++ 读书笔记 条款14 以对象管理资源
- 《Effective C++》学习笔记条款13 以对象管理资源
- effective c++ 条款13,16(以对象管理资源,成对使用new delete的形式相同)
- Effective C++ 条款13 以对象管理资源
- Effective C++:条款13:以对象管理资源
- effective C++ 13_以对象管理资源 读书笔记
- Effective C++——》条款13:以对象管理资源
- 读书笔记_Effective_C++_条款十三:以对象管理资源
- 条款13:以对象管理资源