讲到内存池我们会想到对对象进行动态分配的过程new包含三个过程

1.使用operator new分配内存

2.使用placement new 初始化

3.返回内存地址。

分配内存可以分解成分配内存和获取内存两步,只是一般在一步里进行。

一.使用pool类,获取已经分配了的内存

#include <iostream>
#include <boost/pool/pool.hpp>
using namespace std;
using namespace boost; int main()
{
pool<> p1(sizeof(int));
int *p = (int*)p1.malloc();//返回内存
if (p1.is_from(p) == true)
{
cout << "hello world" <<endl;
}
return 0; }

二.object_pool从pool继承可以对进行分配的自定义类型对象初始化

#include <iostream>
#include <boost/pool/object_pool.hpp>
using namespace std;
using namespace boost; struct 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 << p->a <<endl;
p = p1.construct(7,8,9);
cout << p->a <<endl;
return 0; }

三.singleton_pool类似于单实例模式

#include <iostream>
#include <boost/pool/singleton_pool.hpp>
using namespace std;
using namespace boost; struct pool_tag
{ }; typedef singleton_pool<pool_tag,sizeof(int)> sp1;
int main()
{
int *p = (int*)sp1::malloc();
sp1::release_memory();//释放内存池中所有未被分配的内存
return 0; }

最新文章

  1. eventbus实时更新
  2. VMware安装centos虚拟机
  3. 转 Windows+VS2013爆详细Caffe编译安装教程
  4. js手机网页跳转
  5. An internal error occurred during: &quot;Building workspace&quot;.
  6. leetcode 119
  7. TTY驱动程序架构
  8. .NET技术-.NET各大网站-编程技术网址
  9. MVC小系列(十八)【给checkbox和radiobutton添加集合的重载】
  10. 武汉科技大学ACM:1001: 谁不爱打牌
  11. PatrolRobot(UVa1600)BFS
  12. Apache不能启动解决办法
  13. 中文字符 unicode转utf-8函数 python实现
  14. jdbc hibernate myBatis比较
  15. JS学习笔记:(三)JS执行机制
  16. 【CERC2016】【BZOJ4792】村庄 搜索
  17. ImitateUCM项目启动Tomcat的过程
  18. 「洛谷5283」「LOJ3048」「十二省联考2019」异或粽子【可持久化01trie+优先队列】
  19. 类 __new__方法实现单例
  20. os.walk() 目录生成器

热门文章

  1. Atitit.跨语言数据库db&#160;&#160;api兼容性&#160;jdbc&#160;odbc&#160;ado&#160;oledb&#160;增强方案
  2. C语言中fgetc函数返回值为什么是int?
  3. python学习代码
  4. 最新 AFNetworking 3.0 简单实用封装
  5. pdfBox 读取pdf文件
  6. 第一百九十五节,jQuery EasyUI,Resizable(调整大小)组件
  7. diamond源码阅读-循环探测配置信息是否变化rotateCheckConfigInfo
  8. 微信 oauth4
  9. WPF数据模板样式选择器
  10. go http的三种实现---2