MemoryPool内存池(一)

最近做了一个小项目,做完后感觉可以用内存池进行优化,此篇是记录内存池基础知识学习的笔记(只是笔记,不是原创内容噢)

一、前言
1、采用new/delete或者malloc/free,在堆上频繁地分配和释放,会有性能上的损失;
2、采用new/delete或者malloc/free,系统中会出现大量的内存碎片,降低了内存使用率。

二、内存池
在这里插入图片描述
这里只描述固定内存池

1、固定内存池 = n个固定大小的内存块
2、内存块 = 1个内存池块头 + n个固定大小的内存单元(数量由内存块大小决定)
3、内存池块头:描述了与之关联的内存块的使用信息

内存池块头的结构体定义:

struct MemoryBlock
{
   
	unsigned short nSize; //记录所有内存分配单元的大小(不包括MemoryBlock结构体本身的大小)
	unsigned short nFree; //记录一个内存块中自由分配单元的数量
	unsigned short nFirst; //记录内存块中剩余自由单元中第1个自由单元
	unsigned short nDunmmyAlign1;
	MemoryBlock* pNext; //指向下一个内存块
	char aData[1];

	static 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值