- 4
- 0
- 约1.44万字
- 约 20页
- 2016-11-07 发布于辽宁
- 举报
C++内存池设计
在项目中进程要对变量和对象分配空间,由于频繁的使用new和delete很消耗程序的运行时间,而且容易产生各种内存泄露,内存释放错误等问题。为此,需要设计一个通用的内存池来完成相关的分配和释放的工作。
建立内存池:
首先向系统申请一块内存,这块内存的大小由使用者根据需要设置初始内存大小。
定义一个如下面代码所示的双向链表,将从系统分配的内存分为若干块。使用双向链表方便指针向前和向后遍历查找。
链表中*Data指向了系统分配的内存,pUser使用二级指针保存了内存申请者的地址,方便以后系统内存块更改,改变申请者的指向。后面会详细介绍。将双向链表指向指向内存如下所示:
假设内存池初始块数为4块,每块的大小为100个字节,则向系统申请400个字节的内存块,每块的大小为100字节。之后使用双向链表DATA指针指向内存块,每个指针能分配的大小如图所示从大到小递减。
对象内存分配:
对内存的链表指针分配好后,用户可以使用内存池进行内存分配,对于用户的内存分配有两种情况,一种是在现有的内存池中能找到合适的内存块,另一种情况是现有内的内存池没有足够的内存块来分配,需要重新向系统申请内存来满足用户的需求。下面分别就这两种内存分配情况进行说明:
情况1内存池有足够的内存块进行分配
假设用户申请了240个字节的内存空间,内存池现在有四个内存块
您可能关注的文档
- 学士学位论文-年产6万吨环氧树脂车间工艺设计.doc
- 学士学位论文-年产6万吨味精厂说明书.doc
- 学士学位论文-年产7万吨聚对苯二甲酸乙二醇酯的工艺初步设计课程设计.doc
- 学士学位论文-浅述大黄的炮制方法与药理研究.doc
- 学士学位论文-日处理200t精米生产车间工艺设计说明书.doc
- 学士学位论文-三色鸽食品厂降压变电所的电气设计 1.doc
- 学士学位论文-年产10万吨啤酒工厂发酵车间设计课程设计任务书.doc
- 学士学位论文-年产20万吨的啤酒工厂设计.doc
- 学士学位论文-数控工作台三维造型设计及关键零部件-工艺设计.doc
- 学士学位论文-钨粉生产工艺研究.doc
- 2026年智慧健康管理系统创新报告.docx
- 河北衡水市武强中学2025-2026学年高二下学期4月期中物理试题(含解析).docx
- 2026年人工智能行业智能老年防走失定位器创新报告.docx
- 2026年低空经济飞行器量子技术应用创新报告.docx
- 2026年农业智能农业智能育种创新报告.docx
- 河北省保定市莲池区保定市第一中学2025-2026学年高二下学期期中考试生物试题(含解析).docx
- 2026年智慧城市电子站牌充电创新报告.docx
- 河北省邯郸市平恩中学等校2025-2026学年八年级期中考试英语试题(含解析).docx
- 2026年供应链创新技术应用报告.docx
- 2026年体育智能赛事管理系统支付系统创新报告.docx
原创力文档

文档评论(0)