Boost库学习笔记-------内存管理
来源:互联网 发布:php get不到数据 编辑:程序博客网 时间:2024/05/21 11:15
1.scoped_ptr
1.1 类似于标准库中的auto_ptr,区别是一旦获取指针所有权,就不在交出去。
实现机制:赋值运算符与赋值运算都声明为private
auto_ptr<int> autoPtr1(new int(10));
auto_ptr<int> autoPtr2;
autoPtr2=autoPtr1; / /指针所有权发生了转移
scoped_ptr<int> sp1(autoPtr1); //autoPtr1不在拥有指针所有权
scoped_ptr<int> sp2=sp1; //错误,不能转移指针所有权
1.2 reset()成员函数废弃拥有的指针。
1.3 get()可以返回原始指针
2.scoped_array
2.1 类似scoped_ptr,只不过初始化时传入的是通过new[ ]生成的指针,解决了标准库中没有管理数组指针的问题。
2,2 提供了operator[ ]运算符重载,可以想操作数组下表一样操作。
2.3在需要动态数组的情况下不能自动增长,推荐使用std::vector,除非系统不支持或对性能要求极高。
3.shared_ptr(最重要的指针)
3.1shared_ptr实现了引用计数的智能指针,可以任意拷贝和复制,当引用计数为0时,自动删除。并且可以用到标准 容器中。
3.2 shared_ptr的reset()函数与scoped_ptr不同,它是将引用计数减一,停止共享,除非为0,否则不会删除指针。
3.3 unique()检查是否唯一拥有指针,如果是返回true。
3.4有专门转型函数与标准库中函数相对应(static_pointer_cast<T>等等)
3.5shard_ptr最接近原始指针
4.工厂函数
4.1为了消除构造shared_ptr时,显示调用new却没有响应的delete显示调用的不对称性,提供了工厂函数 make_shared<T>()来消除对new的显示调用。make_shared要比直接构造shared_ptr效率高,因为他只进行一次内存分配,消除了shared_ptr构造时的开销。
例: shared_ptr<String> sharPtr=make_shared<String>("hello world");
5.shared_array
5.1 用于数组的智能指针,与shanred_ptr区别在于构造函数需要new[ ]返回的原始指针
- Boost库学习笔记-------内存管理
- C++的boost学习--内存管理
- Boost源码学习二[内存管理二]
- 内存管理学习笔记
- boost库学习笔记
- boost库学习笔记
- boost库学习笔记
- boost库学习笔记
- boost库学习笔记
- Boost库学习笔记
- 内存管理 Boost::singleton_pool
- 内存管理 Boost::singleton_pool
- boost::shared_ptr内存管理
- boost的内存管理
- boost 内存管理
- slab内存管理学习笔记
- linux内存管理学习笔记
- IOS学习笔记:内存管理
- 反射类的使用ReflectUtil(设置set和获取get某个类属性值)
- WIN7封装超详细图文教程+封装工具包+素材包
- cocos2d-x安卓环境搭建
- PHP简单计算器
- 黑马程序员——Java基础语法(二)---流程控制与函数
- Boost库学习笔记-------内存管理
- 网站外链的重要性
- Android入门:广播发送者与广播接收者
- mvn常用命令
- Android Robotium – How do you detect a context menu?
- Android XML解析学习——创建XML .
- 程序员面试IQ问题解答——选乒乓球问题
- 望闻问切诊断问题
- Shell脚本编程学习入门 01