- 0
- 0
- 约2.45千字
- 约 2页
- 2026-01-15 发布于北京
- 举报
内存池的结构:
(1)最基本的为内存块,用malloc函数申请,内存块前8byte用于保存内存信息,
有:本块内存的size,指向下一块内存的指针;
(2)其次为管理一组相同大小的内存块的类MemoryStack:该类功能函数有:
Malloc申请该类对象初始化的固定大小的内存,并初始化内存信息;Free外部调用释
放内存,将释放的内存管理起来;还有构造函数、析构函数初始化及摧毁内存。
该类维持两条链表,一条管理当前空闲的内存块pUsed,一条管理当前正在使用
的内存块pFree。Malloc时,如果pFree不为空,将pFree中内存移到pUsed并返
回,如果为空,则动态申请新内存,并添加到pUsed中,返回;Free时,则将
要释放的内存从pUsed移到pFree中。
(3)再外层为内存池类MemoryPool:
该类初始化时传入需要管理的不同大小的内存的类别数、每类的内存大小的数
组、每组大小内存块数的上限,内存池管理的内存总和的上限。构造函数保存传入的
参数,根据传入参数对各组内存大小进行排序,然后初始化需要的MemoryStack;
申请内存时,先按照大小查找出合适大小的MemoryStack,再调用
MemoryStack的Malloc函数申请内存;
释放时也先解析出要释放的内存的大小,对比各个MemoryStack管理的内存
块的大小,调用对应的MemoryStack对象的Free函数;
对于内存大小超过最大的MemoryStack管理大小的内存申请释放,直接动态
申请释放内存,当然,为了释放时候的Size的确定,申请的时候多申请8byte,并在
开头8byte加入内存块信息,方便释放的时候统一解析size信息。
内存池借口使用说明:
//构造函数,传入参数Number:不同尺寸大小内存的种类数,unsignedint*BlockSize表示各个
种类内存尺寸的数组,MaxNo为每类尺寸内存最大数目,MaxMemSum为最大的内存总和
CMemoryPool(unsignedintNumber,unsignedint*BlockSize,unsignedintMaxNo,
unsignedintMaxMemSum);
//析构函数
~CMemoryPool();
//从内存池申请大小为nSize的内存块
void*Malloc(unsignedintnSize);
//将从内存池申请的内存释放回内存池
boolFree(void*pPoint);
//修改当前内存大小,其中pPoint为传入的当前的内存指针,NewSize为新的内存大小,
bCopyDataFlag为保存当前内存里的数据标志,为true时保留当前数据
void*ReMalloc(void*pPoint,unsignedintNewSize,boolbCopyDataFlag);
构造函数接口说明:
(1)构造函数进行内存池的初始化工作,传入的参数有:
内存池需要管理的不同size的内存栈的种类数,每个内存栈管理大小相同的一
组内存,该参数为unsignedintNumber;
其次为与内存栈种类数对应的每种内存栈的内存块的大小,每种内存块的大小
通过数组传入,注意数组元素的个数应与前一个参数Number一致;
再然后是两个对内存池做限制的两个上限参数,一个为每个内存栈中所能管理
的内存块的数量上限,超过了该上限,该大小的内存块将不再动态申请新的内
存块,只在当前的基础上进行;
另外一个为内存池管理的内存的总和的上限,也就是所有不同大小的内存栈中
所有内存块的大小总和,总和超过上限后,也将不再新动态开辟内存,只在当
前的基础上进行
(2)申请内存函数接口Mallco():
该接口只传入一个参数,就是需要申请的内存块的大小信息;该函数如果调用
成功,也就是申请内存成功,将返回指向所申请的内存块的指针,指针类型为
(void*),如
您可能关注的文档
- 招聘广告发布与人才筛选策略指南.pdf
- 正午太阳高度角变化及昼夜长短规律探讨.pdf
- 鄂教版六年级科学下册:运载教学设计.pdf
- 2013年深圳市考试申论试题深度.pdf
- 甲状腺激素与抗甲状腺药物临床应用及不良反应分析.pdf
- 橙花传粉机制及果实对种子传播影响.pdf
- 选修3-5第17章波粒二象性同步导学案.pdf
- 基于对象多精灵编码在H.2 AVC中未分割应用研究.pdf
- CFD建模在HIelt工艺开发中应用.pdf
- 函数图象及其应用.pdf
- 后天性鼻孔狭窄疾病防治指南解读.docx
- 2026四川遂宁市船山区第一批乡村公益性岗位安置岗位信息100人备考题库及答案详解(新).docx
- 2026四川遂宁市船山区第一批乡村公益性岗位安置岗位信息100人备考题库及答案详解(夺冠系列).docx
- 2026四川遂宁市船山区第一批乡村公益性岗位安置岗位信息100人备考题库及答案详解参考.docx
- 2026四川遂宁市船山区第一批乡村公益性岗位安置岗位信息100人备考题库有完整答案详解.docx
- 2026四川遂宁市船山区第一批乡村公益性岗位安置岗位信息100人备考题库及答案详解一套.docx
- 后天性鼻孔闭锁疾病防治指南解读.docx
- 2026四川遂宁市船山区第一批乡村公益性岗位安置岗位信息100人备考题库及答案详解1套.docx
- 2026四川遂宁市船山区第一批乡村公益性岗位安置岗位信息100人备考题库及完整答案详解一套.docx
- 后天性脑膜膨出疾病防治指南解读.docx
最近下载
- 九上期末考试数学模拟.pdf VIP
- 2025年体育用品绿色技术专利行业报告.docx
- 2025年内蒙古呼和浩特市政府采购评审专家考试真题(附含答案).docx VIP
- 2023-2025中考化学真题分类汇编:专题05 元素考点01 元素及元素周期表.docx VIP
- 2025年内蒙古呼和浩特市政府采购评审专家考试真题含答案.docx VIP
- 98浙J30 卷帘门-标准图集.docx VIP
- 三年(2019-2021)中考真题化学-考点08原子结构(全国通用).docx VIP
- 2025年内蒙古呼和浩特市政府采购评审专家考试测试题及答案.docx VIP
- 二零二五版合同Amazon店铺代运营协议模板.docx VIP
- 《膝关节教学》课件.ppt VIP
原创力文档

文档评论(0)