C++常用的智能指针auto_ptr、shared_ptr
来源:互联网 发布:网络语 安利 编辑:程序博客网 时间:2024/06/03 05:32
利用’对象的析构函数一定会被调用’这一特性,在对象析构的时候delete资源。对于的机制是智能指针。目的是帮助自动释放资源。
常用的智能指针:STL的std::auto_ptr<>、TR1的std::tr1::shared_ptr<>
std::auto_ptr<>
auto_ptr<>在被销毁的时候(离开其scope时),将会==对其所指向对象调用delete==。
1. 不要令多个auto_ptr<>指向同一个对象,否则该对象会被delete多次;一个对象被delete多次将会导致未定义的结果甚至是致命错误;
2. auto_ptr<>不会保留副本:当拷贝一个auto_ptr<>的时候,被拷贝的那个auto_ptr<>会变成nullptr;
3. auto_ptr<>不是引用计数型的,只要它到达生命期,指向的对象就被delete;
std:: tr1::shared_ptr<>
- shared_ptr<>是引用计数型的,ref_cnt == 0时才delete对象
- shared_ptr<>的拷贝是正常的拷贝,允许保留副本
智能指针未完善的地方
- 以上两个智能指针只能指向delete而不能执行delete [];因此==**绝对不要使用auto/shared_ptr来指向动态数组(也没有必要使用动态数组,因为vector和string完全ok);
- 针对数组的替代品:boost::scoped_array、boost::shared_array;
std::tr1::shared_ptr<>有一个重载形式:第二个参数可以接收删除器deleter
当引用计数为0时,shared_ptr不delete对象,而是执行删除器deleter。
因此,可以在deleter中定制自己的管理操作。
阅读全文
0 0
- C++常用的智能指针auto_ptr、shared_ptr
- 【C++】智能指针auto_ptr/unique_ptr/shared_ptr/weak_ptr!!!
- c++智能指针的使用,auto_ptr,shared_ptr
- 智能指针:auto_ptr和shared_ptr
- 智能指针(auto_ptr 和 shared_ptr)
- 智能指针(auto_ptr 和 shared_ptr)
- 智能指针(auto_ptr 和 shared_ptr)
- 智能指针(auto_ptr 和 shared_ptr)
- 智能指针(auto_ptr 和 shared_ptr)
- 智能指针(auto_ptr 和 shared_ptr)
- 智能指针(auto_ptr 和 shared_ptr)
- 智能指针(auto_ptr 和 shared_ptr)
- 智能指针(auto_ptr 和 shared_ptr)
- c++智能指针:auto_ptr shared_ptr
- c++智能指针:auto_ptr shared_ptr
- 【C++】智能指针的作用,模拟实现auto_ptr,scoped_ptr,shared_ptr,scoped_array,shared_array
- 智能指针scoped_ptr,shared_ptr,weak_ptr和auto_ptr的使用
- std::auto_ptr boost::shared_ptr智能指针的应用
- 我的第一篇博客
- android binder
- Java读取XML文件的方式
- Android 同步锁为什么锁不住问题 96 安卓视角 关注 2017.08.13 16:14 字数 463 阅读 101评论 0喜欢 7 Android 同步锁 synchronized,归根到底
- 本地访问远程数据库MySQL
- C++常用的智能指针auto_ptr、shared_ptr
- netty权威指南读书笔记--liunx网络I/O模型介绍
- 记:破解MFC小程序00
- 自定义属性
- System类的 getProperties()和getProperty(String)取得当前系统的属性
- (3)动态的使用Fragment
- css国际化经验总结
- IDEA------小技巧(1)注释/取消注释快捷键
- IPC基础