- 浏览: 763631 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
template<typename UserAllocator = ... > class pool { public: //接受一个size_type类型的整数,指示每次分配内存块的大小(不是内存池的大小) explicit pool(size_type requested_size); ~pool(); //返回requested_size size_type get_requested_size()const; //用void*指针返回从内存池中分配的内存块,大小为requested_size,如果分配失败返回0,不会抛出异常 void * malloc();//从内存池中任意分配一个内存块 void * ordered_malloc();//分配的同时合并空闲块链表 void * ordered_malloc(size_type n);//连续分配n块内存 bool is_from(void * chunk)const;//测试chunk是否是从这个内存池分配出去的 /*下面的函数一般都不应该由程序员调用*/ //一般情况下内存池会自动管理内存分配,不应该调用free(),除非内存池空间已经不足,必须释放已经分配的内存 void free(void *chunk); void ordered_free(void * chunk); void free(void *chunk,size_type n); void ordered_free(void *chunk,size_type n); //让内存池释放所有未被分配的内存,但已分配的内存块不受影响 bool release_memory(); //强制释放pool持有的所有内存,不管内存块是否被使用,析构函数就是调用的purge_memory() bool purge_memory(); };
pool用法
#include<boost/pool/pool.hpp> #include<iostream> #include<cassert> using namespace boost; using namespace std; int main() { pool<> p1(sizeof(int)); cout << p1.get_requested_size() << endl;//4 //只能用如普通数据类型,不能用于复杂的类和对象,因为它只调用内存,不调用构造函数,类和对象请看object_pool int *p = (int *)p1.malloc(); if(NULL==p){ cout << "这种情况极少出现"<<endl; return 0; } double *d = (double *)p1.malloc(); cout << p1.is_from(d) << endl; assert(p1.is_from(d)); p1.free(p); for(int i=0;i<100;++i){ p1.ordered_malloc(10); } }
发表评论
-
multi_index_container
2018-08-11 13:04 458根据不同的类中不同的字段排序 #include < ... -
program_options读命令行和配置文件
2018-07-27 11:30 867#include <boost/program_opti ... -
centos下boost安装
2014-03-27 09:28 1061./booststarp.sh //这里的一些错误不用管 ... -
GC的改良
2013-10-17 22:05 577分代回收:对分配不久,诞生时间较短的“年龄”对象进行重点扫描, ... -
GC与引用记数
2013-10-16 21:57 696根(Root)就是判断对象是否可被引用的起始点。至于哪里才是根 ... -
boost 信号槽
2011-06-08 23:43 2321#include<boost/signals2.hp ... -
boost bind
2011-06-07 15:28 1689bind并不是一个单独的类或函数,而是非常庞大的家族,依据绑定 ... -
boost reference_wrapper
2011-06-05 21:07 1564reference_wrapper是一个引用类型的包装器 ... -
元编程
2011-06-02 22:46 933元编程的最大特点在于:某些用户自定义的计算可以在程序翻译期进行 ... -
参数化虚拟性
2011-06-02 22:17 865#include<iostream> usi ... -
boost any与variant
2011-05-31 15:55 2430any:是一种只能容纳一个元素的容器,但这个元素可以是任意类型 ... -
traits
2011-05-30 16:43 792#include<iostream> usi ... -
动静多态
2011-05-30 15:40 1065由于继承||虚函数在运行期进程处理,这种多态叫动多态。 模板允 ... -
局部特化
2011-05-29 16:27 1034局部特化并不会引入一个新的模板,它只对原来模板(基本模板)进行 ... -
类模板与模板类
2011-05-29 16:08 7071.类模板:该类是一个模板,他代表的是:整个类家族的参数化描述 ... -
boost tuple
2011-05-27 15:03 1088tuple(元组):定义了一个有固定数目元素的容器,其中的每个 ... -
boost array
2011-05-27 00:06 932array本质上是一个对静态数组的包装,没有构造函数,不能指定 ... -
单元测试
2011-05-23 22:00 889test库提供了一个最小化的测试套件minimal test. ... -
boost StaticAssert
2011-05-23 21:42 938static_assert库把断言的诊断时刻由运行期提前到编译 ... -
boost正则表达式
2011-05-17 23:10 2800xpressive是boost的正则表达式库,它比boost. ...
相关推荐
相信不少人听过 boost 委员会提过 boost 里的对象池设计存在缺陷。我花了一些时间研究它的实现,发现其在效率上确实存在严重问题。这里给出一套解决方案。在效率上有了较大提高。可以完全替换你项目里的 object_pool...
`boost::pool` 是一个通用的内存池,适用于任何大小的对象,而 `boost::singleton_pool` 是针对固定大小对象的单例内存池,适用于大量相同大小对象的情况。 `boost::pool` 的使用方法包括: 1. 定义一个对象池类,...
本篇文章将深入探讨C/C++的内存管理机制,特别是内存池的概念,以及如何使用APR内存池和BOOST内存池。 首先,C/C++的内存分为四个主要区域:栈区、堆区、全局/静态存储区和常量存储区。栈区存储函数参数和局部变量...
此外,还有一些库如Boost.Pool提供了现成的内存池实现。 8. **应用实例**:内存池广泛应用于数据库、网络服务、游戏引擎等领域,这些场景通常涉及到大量小对象的快速创建和销毁。 总的来说,C++对象内存池是一种...
例如,`boost::threadpool::pool`是线程池的主要类,它提供了添加任务、启动线程池、停止线程池等方法。`pool::schedule`用于向线程池提交任务,而`pool::wait`则让主线程等待所有任务完成。 在修复内存泄漏的问题...
3. **内存池**:Boost库中的Pool库是一个内存管理工具,它实现了内存池的概念,可以提高内存分配和释放的效率,尤其在需要频繁创建和销毁小对象时,能显著降低系统开销。 4. **图像处理**:Boost.GIL(Generic ...
内存池是一种内存管理技术,它在程序启动时预先分配一大块连续的内存空间,并将其划分为多个固定大小的小块,这些小块被称为内存池。内存池的主要目标是提高内存分配和释放的效率,减少系统调用,避免内存碎片,以及...
1. **Pool Allocation**:Boost.Pool提供了一种内存池的实现,它可以提高小对象的分配速度和内存效率。内存池通过预先分配一大块内存,然后从中切割出较小的块来分配给对象,避免了频繁的小块内存分配和释放带来的...
此外,还有一些开源库,如Boost库中的Pool库,提供了现成的内存池实现。 使用内存池的优点包括: 1. **性能提升**:通过批量分配和复用,减少了内存分配的系统调用,提高了程序运行速度。 2. **减少碎片**:由于...
Boost.Pool,实现高效内存池。 6. **并发和并行编程**:包括 Boost.ThreadPool,线程池管理;Boost.Chrono,时间点和时间段的操作;Boost.Coroutine,实现轻量级协程。 7. **算法和数据结构**:如 Boost.Graph,图...
Boost.Pool则是内存池的实现,优化了内存分配的效率。 Boost_1_58_0版本虽然已经较早,但其包含的许多组件至今仍被广泛使用,比如Boost.Serialization、Boost.Thread和Boost.Asio等。这些组件不仅在学术研究中发挥...
Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为...Pool 内存池管理;smart_ptr 智能指针。
7. **Boost.Pool**:内存池管理库,提高内存分配和释放的效率。 8. **Boost.Spirit**:是一个高级的解析库,可以用来构建解析器和词法分析器。 【压缩包子文件的文件名称列表】: - **Rmsvc-tools.jam**:这可能是 ...
2. **内存分配器**:提供了多种内存分配模式的分配器,如池分配器(`pool_allocator`),以优化性能和减少内存碎片。 3. **直接 I/O 流格式化**:`vectorstream` 和 `bufferstream` 类提供了高效的数据序列化和反...
内存池管理 smart_ptr 5个智能指针,学习智能指针必读,一份不错的参考是来自CUJ的文章: Smart Pointers in Boost,哦,这篇文章可以查到,CUJ是提供在线浏览的。中文版见笔者在《Dr.Dobb's Journal软件研发...
Boost提供了多种内存管理工具,如`Boost.Pool`用于管理对象池,`Boost.SmartPtr`提供智能指针等,这些工具可以帮助开发者更高效地管理内存资源。 #### 4. **并发编程** 随着多核处理器的普及,多线程编程变得越来越...
再者,Boost库提供了许多算法和数据结构,如Boost.Graph用于图处理,Boost.Polygon提供高效的几何计算,Boost.Pool则是内存池管理工具。这些库在特定领域具有高度优化,对理解和实现相关算法大有裨益。通过研究boost...
7. **综合工具**:Conversion处理类型转换,Crc计算CRC校验,Optional提供可选值类型,Pool内存池管理,Preprocessor预处理器宏工具,Program_options命令行选项解析,Python支持C++与Python的交互,Smart_ptr智能...
基于policy-based的内存池。 效率与boost pool略好,详情请见:http://blog.csdn.net/chenyu2202863/archive/2010/08/17/5818929.aspx。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载...