一个利用memory block分配机制的高性能的内存管理器类

问题描述:

1.众所周知,内存管理机制几乎存在于一切优秀的系统中。这样做原因不外乎以下几点:1.改善性能;2.减少碎片的产生;3.侦测系统的内存使用情况,便于调错,便于了解系统的内存使用,以对系统的架构从内存使用层面上进行设计考量;

2.我前面有文已经说明,内存管理的机制一般分为:1.预先分配大量等尺寸的块,自己维护,逐次满足对单个内存单元的请求;2.释放的内存也自己维护,以便重复使用;3.使用定长和变长机制进行内存管理。

3.本文试着以较大尺寸(4096)的内存块为分配单元,然后在一个块中利用指针偏移来满足小对象的内存申请,当当前块内存耗尽时,又分配同样尺寸的内存块,重复以前工作。块与块之间靠指针维护(next)。

4.程序交还的内存,以内存尺寸为键,存入STL map;

5.当STL map中有内存时,优先从此中寻找满足的给定尺寸的内存需求;

6.和直接系统申请内存对比测试,发现,执行相同的操作,本内存管理器所消耗时间仅为系统内存申请耗时的十分之一


程序代码:

#ifndef _MEMORY_BLOCK_POOL_H_
#define _MEMORY_BLOCK_POOL_H_


#include <stdlib.h>
#include <vector>

#include "windows.h"


#define ALIGN( size, bits )  ( ( ( ( size - 1 ) >> bits ) + 1 ) << bits )


/*
* memory pool fixed length block 
*
*
*/
class MemoryBlockPool
{
public:
	static const int MAXBLOCK = 256;
	static const int MALLOCKSIZE = 4096;
	static const int DEFAULTBASELEN = 4;

	typedef struct tagMemStatInfo
	{
		char*   allocMem;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值