首先,在敲代码之前,必须改动一个问题。要不然,无法链接:

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的使用的更多相关文章

  1. boost准模板库scoped_ptr指针的使用以及auto_ptr智能指针的对照

    首先我们看看scoped_ptr的基本使用,包括了swap(),get(),reset()的使用,重要的提醒是作用域结束的时候会自己主动析构,无需手动的释放资源: #include<boost/ ...

  2. boost pool 和 object_pool

    内存池(Memory Pool)是一种内存分配方式.        通常我们习惯直接使用new.malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的 ...

  3. STL--标准模板库--简要概述

    STL--标准模板库 #include <vector>     //头文件 STL(Standared Template Library)即标准模板库,惠普实验室开发的一系列软件的统称. ...

  4. Buffer Pool--数据库内存结构

    数据库从操作系统申请到的内存可分为两部分:1.缓存池内存(数据页和空闲页)2.非缓存池内存(线程/DLL/连接服务器等) Note:通过服务器实例属性设置的最大/最小服务器内存是指缓存池内存Note: ...

  5. POJ 1655.Balancing Act-树的重心(DFS) 模板(vector存图)

    Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17497   Accepted: 7398 De ...

  6. 22.boost图模板

    //#pragma warning(disable : 4819) #include <boost/config.hpp> #include <iostream> // for ...

  7. 面试官:"准备用HashMap存1w条数据,构造时传10000还会触发扩容吗?"

    // 预计存入 1w 条数据,初始化赋值 10000,避免 resize. HashMap<String,String> map = new HashMap<>(10000) ...

  8. C++之Boost准标准库配置

    下载安装 进入官网下载地址:https://www.boost.org/users/download/ 本教程直接下载官方已编译库,不涉及源代码手动编译 点击官方编号好的链接,然后进入一个下载地址:h ...

  9. Linux的.a、.so和.o文件 windows下obj,lib,dll,exe的关系 动态库内存管理 动态链接库搜索顺序 符号解析和绑定 strlen函数的汇编实现分析

    Linux的.a..so和.o文件 - chlele0105的专栏 - CSDN博客 https://blog.csdn.net/chlele0105/article/details/23691147 ...

随机推荐

  1. PHP实现链表

    看了很久数据结构但是没有怎么用过,在网上看到了关于PHP的数据结构,学习了一下,与大家一起分享一下. 简短不割                                              ...

  2. 转:Sublime Text 2 实用快捷键[Mac OS X]

    转: http://lucifr.com/2011/09/10/sublime-text-2-useful-shortcuts/ Sublime Text 2 实用快捷键[Mac OS X] luca ...

  3. (转) 问题解决:Apache: You don't have permission to access / on this server

    问题解决:Apache: You don't have permission to access / on this server 转自:http://blog.csdn.net/crazyboy20 ...

  4. libmysqld,嵌入式MySQLserver库

    25.1.1. 嵌入式MySQLserver库概述 使用嵌入式MySQLserver库,可以在client应用程序中使用具备所有特性的MySQLserver. 主要长处在于.添加了速度.并使得嵌入式应 ...

  5. 【python】列出http://www.cnblogs.com/xiandedanteng/p/中的标题

    # 列出http://www.cnblogs.com/xiandedanteng/p/中的标题 from bs4 import BeautifulSoup import requests user_a ...

  6. C#应用视频教程3.2 Halcon软件测试

    Halcon是图像处理比较牛逼的一个软件(德国人的东西,做的非常强大,里面集成的算法很多,可能你一辈子研究这个也做不过他),然而牛逼归牛逼,康耐视,基恩士也很牛逼,但是日本人的东西一般太过封闭,屌丝用 ...

  7. C++ 11 - STL - 函数对象(Function Object) (上)

    1. 定义 在STL中,可以把函数传递给算法,也可以把函数对象传递给算法. 那么,什么是函数对象呢? 我们来看下它的声明: class X { public: // define function c ...

  8. 【转】IT新人如何快速成长

    主动积极 主动积极包括很多方面了,主动学习.主动思考.主动承担责任等等.我觉得主动性很重要,如果你能做到这一点,那么肯定会把工作做的很好的. 学会学习 公司不是学校,需要改变由老师灌输知识的学习方式. ...

  9. cookie 封装

    1.代码 ;(function (factory) { var registeredInModuleLoader; if (typeof define === 'function' && ...

  10. linux命令:tail 命令

    tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新, ...