boost之内存池
2024-08-25 22:02:35
讲到内存池我们会想到对对象进行动态分配的过程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; }
最新文章
- eventbus实时更新
- VMware安装centos虚拟机
- 转 Windows+VS2013爆详细Caffe编译安装教程
- js手机网页跳转
- An internal error occurred during: ";Building workspace";.
- leetcode 119
- TTY驱动程序架构
- .NET技术-.NET各大网站-编程技术网址
- MVC小系列(十八)【给checkbox和radiobutton添加集合的重载】
- 武汉科技大学ACM:1001: 谁不爱打牌
- PatrolRobot(UVa1600)BFS
- Apache不能启动解决办法
- 中文字符 unicode转utf-8函数 python实现
- jdbc hibernate myBatis比较
- JS学习笔记:(三)JS执行机制
- 【CERC2016】【BZOJ4792】村庄 搜索
- ImitateUCM项目启动Tomcat的过程
- 「洛谷5283」「LOJ3048」「十二省联考2019」异或粽子【可持久化01trie+优先队列】
- 类 __new__方法实现单例
- os.walk() 目录生成器
热门文章
- Atitit.跨语言数据库db&#160;&#160;api兼容性&#160;jdbc&#160;odbc&#160;ado&#160;oledb&#160;增强方案
- C语言中fgetc函数返回值为什么是int?
- python学习代码
- 最新 AFNetworking 3.0 简单实用封装
- pdfBox 读取pdf文件
- 第一百九十五节,jQuery EasyUI,Resizable(调整大小)组件
- diamond源码阅读-循环探测配置信息是否变化rotateCheckConfigInfo
- 微信 oauth4
- WPF数据模板样式选择器
- go http的三种实现---2