- 4
- 0
- 约1.44万字
- 约 20页
- 2016-11-24 发布于辽宁
- 举报
C++内存池设计
在项目中进程要对变量和对象分配空间,由于频繁的使用new和delete很消耗程序的运行时间,而且容易产生各种内存泄露,内存释放错误等问题。为此,需要设计一个通用的内存池来完成相关的分配和释放的工作。
建立内存池:
首先向系统申请一块内存,这块内存的大小由使用者根据需要设置初始内存大小。
定义一个如下面代码所示的双向链表,将从系统分配的内存分为若干块。使用双向链表方便指针向前和向后遍历查找。
链表中*Data指向了系统分配的内存,pUser使用二级指针保存了内存申请者的地址,方便以后系统内存块更改,改变申请者的指向。后面会详细介绍。将双向链表指向指向内存如下所示:
假设内存池初始块数为4块,每块的大小为100个字节,则向系统申请400个字节的内存块,每块的大小为100字节。之后使用双向链表DATA指针指向内存块,每个指针能分配的大小如图所示从大到小递减。
对象内存分配:
对内存的链表指针分配好后,用户可以使用内存池进行内存分配,对于用户的内存分配有两种情况,一种是在现有的内存池中能找到合适的内存块,另一种情况是现有内的内存池没有足够的内存块来分配,需要重新向系统申请内存来满足用户的需求。下面分别就这两种内存分配情况进行说明:
情况1内存池有足够的内存块进行分配
假设用户申请了240个字节的内存空间,内存池现在有四个内存块
您可能关注的文档
- 学位论文-—38m3液化石油储罐结构工艺及焊接工艺设计.doc
- 学位论文-—40kw6极变频调速同步电动机电磁方案及控制系统的设计.doc
- 学位论文-—40kw二级行星减速器设计.doc
- 学位论文-—50kw4极变频调速同步电动机的电磁设计方案及控制系统的设计.doc
- 学位论文-—50t屠宰废水回用处理超滤系统项目设计书.doc
- 学位论文-—51单片机的16x16led点阵式汉字电子显示屏的设计.doc
- 学位论文-—51单片机电子时钟课程设计.doc
- 学位论文-—60头基础良种母牛繁育基地新建项目扩初设计.doc
- 学位论文-—60万ta焦化厂粗苯工段的工艺设计.doc
- 学位论文-—60万方天然气液化项目前期调研报告.doc
- 微纳米材料力学仿真:微纳米尺度断裂力学仿真_(3).断裂力学在微纳米尺度下的特殊性.docx
- 微纳米材料力学仿真:微纳米尺度断裂力学仿真_(2).微纳米尺度断裂力学的基本理论.docx
- 微纳米材料力学仿真:微纳米尺度断裂力学仿真_(4).微纳米材料的制备与表征.docx
- 微纳米材料力学仿真:微纳米尺度断裂力学仿真_(5).微纳米尺度下的材料性能测试.docx
- 微纳米材料力学仿真:微纳米尺度断裂力学仿真_(5).微纳米尺度断裂力学仿真模型建立.docx
- 山西雁门三犁农业科技有限公司年产500吨果脯果干现代化工厂项目环评资料环境影响报告.docx
- 年产4800吨风电拉挤板加工成型项目环评资料环境影响报告.doc
- 高品质不锈钢制品升级技改项目环评资料环境影响报告.doc
- 建筑材料生产线技术改造项目环评资料环境影响报告.docx
- 江阴鼎鑫铝业有限公司年清洗55000套模具项目环评资料环境影响报告.doc
原创力文档

文档评论(0)