boost内存管理机制
来源:互联网 发布:美国的种族歧视 知乎 编辑:程序博客网 时间:2024/05/29 03:20
boost主要是通过六种智能指针来管理内存的:scoped_ptr scoped_array shared_ptr shared_array weak_ptr intrusive_ptr。他们都是轻量级的对象,速度与原始指针相差无几,对于所指的类型T也仅有一个很小且很合理的要求:类型T的析构函数不能抛出异常。
scoped_ptr:仅仅提供了*和->操作,且赋值操作符和拷贝构造函数被定义为私有的,有效的防止了指针所有权的转让。 ==和!=操作符被私有化,拒绝比较操作。
scoped_array:包装了new[]操作符在堆上分配的动态数组,弥补了标准库中没有指向数组的智能指针的缺憾。在需要动态数组的情况下我们因该使用std::vector,它比scoped_array提供了更多的灵活性。除非对性能有非常苛刻的要求,或者编译器不支持标准库,否则不推荐使用scoped_array。
shared_ptr:实现的是引用计数型智能指针,可以安全的放到标准容器中。可以定制删除器,删除器要求是函数对象或者函数指针,只要能像函数那样调用,使得d(p)成立即可.对删除器的要求是它必须是可拷贝的,不能抛出异常。
shared_array:结合了scoped_array和shared_ptr的功能。
weak_ptr:没有重载operator*和->,最大的作用在于协作shared_ptr工作。可以从shared_ptr或则另一个weak_ptr构造获得资源的观测权,它的构造和析构不会引起引用计数的改变,它只是一个默默的观察者。
intrusive_ptr:对内存占用要求的非常严格,必须与原是指针一样;先存代码已经有了引用计数机制管理的对象。
内存池管理对象:pool object_pool
pool:只能作为普通数据类型如double int等的内存池 因为它只是分配内存不调用构造函数。
object_pool:既可以作为普通数据类型的内存池,又可以作为类对象的内存池。
singleton_pool:提供线程安全
pool_allocator:内存配置器
- boost内存管理机制
- 内存管理机制
- 内存管理机制
- 内存管理机制
- 内存管理机制
- 内存管理机制
- 内存管理机制
- 内存管理机制
- 内存优化:内存管理机制
- java内存管理机制
- 第一章:内存管理机制
- .Net内存管理机制详解
- Linux内存管理机制研究
- Java内存管理机制
- .net内存管理机制
- 浅析C++内存管理机制
- .net内存管理机制详解
- C++内存管理机制
- 【leetcode】Gas Station
- java并发编程第四章 线程执行器(1)
- 有深度,面试有用的题
- java基础 第5章 隐藏实施过程
- C++:模板实参推断及引用折叠
- boost内存管理机制
- 丑数
- 图形处理(十)测地极坐标参数化
- respondsToSelector使用
- 设计,素材
- 异常断点和僵尸对象的使用
- 图形处理(十一)Stroke Parameterization
- Git 的BUG小结
- MAC 快捷键