内存池
发布日期:2021-11-07 23:20:54 浏览次数:3 分类:技术文章

本文共 986 字,大约阅读时间需要 3 分钟。

地址:

 

内部构造

内存池类MemoryPool的声明如下:

class MemoryPool{private:    MemoryBlock*   pBlock;    USHORT          nUnitSize;    USHORT          nInitSize;    USHORT          nGrowSize;public:                     MemoryPool( USHORT nUnitSize,                                  USHORT nInitSize = 1024,                                  USHORT nGrowSize = 256 );                    ~MemoryPool();    void*           Alloc();    void            Free( void* p );};

MemoryBlock为内存池中附着在真正用来为内存请求分配内存的内存块头部的结构体,它描述了与之联系的内存块的使用信息:

struct MemoryBlock{    USHORT          nSize;    USHORT          nFree;    USHORT          nFirst;    USHORT          nDummyAlign1;    MemoryBlock*  pNext;    char            aData[1];	static void* operator new(size_t, USHORT nTypes, USHORT nUnitSize)	{		return ::operator new(sizeof(MemoryBlock) + nTypes * nUnitSize);	}	static void  operator delete(void *p, size_t)	{		::operator delete (p);	}	MemoryBlock (USHORT nTypes = 1, USHORT nUnitSize = 0);	~MemoryBlock() {}};
Aache实现

 

转载地址:https://blog.csdn.net/zhangwu416826/article/details/7608581 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:几种智能指针比较
下一篇:1000个苹果分10个装箱

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月05日 00时41分48秒