boost准模板库内存管理中pool和object_pool的使用
首先,在敲代码之前,必须改动一个问题。要不然,无法链接:
boost安装文件夹:D:\boost。
找到D:\boost\boost_1_55_0\include\boost-1_55\boost\system\error_code.hpp。
在error_code.hpp文件开头加入宏定义:#define BOOST_ERROR_CODE_HEADER_ONLY。
然后。以下就是我们的pool的演示样例:
#define BOOST_ALL_NO_LIB
#include<boost/pool/object_pool.hpp>
#include<iostream>
//object_pool继承pool。可是是保护继承,有些操作相似,单有些pool的接口无法使用
using namespace std;
using namespace boost;
class demo_class
{
public:
int a,b,c;
demo_class(int x=1,int y=2,int z=3):a(x),b(y),c(z){};
};
int main()
{
object_pool<demo_class> p1;//创建对象内存池
demo_class *p=p1.malloc();//分配一个原始内存块
cout<<p1.is_from(p)<<endl;
//p指向的内存未经初始化
cout<<(p->a!=1)<<" "<<(p->b!=2)<<" "<<(p->c!=3)<<endl;
demo_class *pa=p1.construct(4,5,6);//构造一个对象。能够传递參数
cout<<(pa->a==4 && pa->b==5 && pa->c==6)<<endl; object_pool<string> pls;//定义一个分配string对象的内存池
for(int i=0;i<10;i++)
{
string *ps=pls.construct("Hello object_pool");//先调用分配内存。再
cout<<*ps<<endl;//连续分配大量的string对象
}
p1.destroy(p);//手工析构和释放内存,然后使用传递的參数调用构造函数
getchar();
}
接着是object_pool的演示样例:
#define BOOST_ALL_NO_LIB
#include<boost/pool/object_pool.hpp>
#include<iostream>
//object_pool继承pool。可是是保护继承,有些操作相似,单有些pool的接口无法使用
using namespace std;
using namespace boost;
class demo_class
{
public:
int a,b,c;
demo_class(int x=1,int y=2,int z=3):a(x),b(y),c(z){};
};
int main()
{
object_pool<demo_class> p1;//创建对象内存池
demo_class *p=p1.malloc();//分配一个原始内存块
cout<<p1.is_from(p)<<endl;
//p指向的内存未经初始化
cout<<(p->a!=1)<<" "<<(p->b!=2)<<" "<<(p->c!=3)<<endl;
demo_class *pa=p1.construct(4,5,6);//构造一个对象,能够传递參数
cout<<(pa->a==4 && pa->b==5 && pa->c==6)<<endl; object_pool<string> pls;//定义一个分配string对象的内存池
for(int i=0;i<10;i++)
{
string *ps=pls.construct("Hello object_pool");//先调用分配内存,再
cout<<*ps<<endl;//连续分配大量的string对象
}
p1.destroy(p);//手工析构和释放内存,然后使用传递的參数调用构造函数
getchar();
}
程序的记过非常easy,就不在此处列出来了。
boost准模板库内存管理中pool和object_pool的使用的更多相关文章
- boost准模板库scoped_ptr指针的使用以及auto_ptr智能指针的对照
首先我们看看scoped_ptr的基本使用,包括了swap(),get(),reset()的使用,重要的提醒是作用域结束的时候会自己主动析构,无需手动的释放资源: #include<boost/ ...
- boost pool 和 object_pool
内存池(Memory Pool)是一种内存分配方式. 通常我们习惯直接使用new.malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的 ...
- STL--标准模板库--简要概述
STL--标准模板库 #include <vector> //头文件 STL(Standared Template Library)即标准模板库,惠普实验室开发的一系列软件的统称. ...
- Buffer Pool--数据库内存结构
数据库从操作系统申请到的内存可分为两部分:1.缓存池内存(数据页和空闲页)2.非缓存池内存(线程/DLL/连接服务器等) Note:通过服务器实例属性设置的最大/最小服务器内存是指缓存池内存Note: ...
- POJ 1655.Balancing Act-树的重心(DFS) 模板(vector存图)
Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17497 Accepted: 7398 De ...
- 22.boost图模板
//#pragma warning(disable : 4819) #include <boost/config.hpp> #include <iostream> // for ...
- 面试官:"准备用HashMap存1w条数据,构造时传10000还会触发扩容吗?"
// 预计存入 1w 条数据,初始化赋值 10000,避免 resize. HashMap<String,String> map = new HashMap<>(10000) ...
- C++之Boost准标准库配置
下载安装 进入官网下载地址:https://www.boost.org/users/download/ 本教程直接下载官方已编译库,不涉及源代码手动编译 点击官方编号好的链接,然后进入一个下载地址:h ...
- Linux的.a、.so和.o文件 windows下obj,lib,dll,exe的关系 动态库内存管理 动态链接库搜索顺序 符号解析和绑定 strlen函数的汇编实现分析
Linux的.a..so和.o文件 - chlele0105的专栏 - CSDN博客 https://blog.csdn.net/chlele0105/article/details/23691147 ...
随机推荐
- IE6支持min-width、max-width CSS样式属性
1.IE6支持max-width解决方法 IE6支持最大宽度,解决CSS代码: .yangshi{ max-width:1000px; _width:expression((document.docu ...
- [Angular-Scaled Web] 6. Navigating between states with ui-router
There are two ways to naviagting between state: 1. Using $state service, $state.go() 2. Using ui-ser ...
- 【python】列出http://www.cnblogs.com/xiandedanteng中所有博文的标题
代码: # 列出http://www.cnblogs.com/xiandedanteng中所有博文的标题 from bs4 import BeautifulSoup import requests u ...
- Java学习笔记七(目录操作)
1.介绍 上一篇博客介绍的是java中经常使用的操作文件的方式,本篇博客着重解说一下,在Java中是怎样来操作目录的.主要是利用的是Java.IO包以下的File类,本篇博客着重解说一下该类的构造函数 ...
- cscope无法索引代码树之外的软链接
http://blog.csdn.net/sudolee/article/details/9052291 背景:为什么非要使用cscope?不用ctags? 尽管ctags可以索引软链接,但是,cta ...
- Android研究之为基于 x86 的 Android* 游戏选择合适的引擎具体解释
摘要 游戏开发者知道 Android 中蕴藏着巨大的机遇. 在 Google Play 商店的前 100 款应用中,约一半是游戏应用(在利润最高的前 100 款应用中.它们所占的比例超过 90% ...
- Linux下的编译器(转)
转自:http://ju.outofmemory.cn/entry/2051 简单的说,编译器就是一个可执行程序,它专门用于将程序员易于编写的高级语言 (如 C 语言) 翻译为机器可以识别的低级语言. ...
- 每日算法之二十三:Reverse Nodes in k-Group
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. If ...
- window下虚拟环境搭建
1.找到你的host文件
- ISP图像质量调节介绍
ISP(Image Signal Processor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正.噪声去除.坏点去除.内插.白平衡.自己主动曝光控制等.依赖于IS ...