- 4
- 0
- 约1.44万字
- 约 20页
- 2016-11-24 发布于辽宁
- 举报
C++内存池设计
在项目中进程要对变量和对象分配空间,由于频繁的使用new和delete很消耗程序的运行时间,而且容易产生各种内存泄露,内存释放错误等问题。为此,需要设计一个通用的内存池来完成相关的分配和释放的工作。
建立内存池:
首先向系统申请一块内存,这块内存的大小由使用者根据需要设置初始内存大小。
定义一个如下面代码所示的双向链表,将从系统分配的内存分为若干块。使用双向链表方便指针向前和向后遍历查找。
链表中*Data指向了系统分配的内存,pUser使用二级指针保存了内存申请者的地址,方便以后系统内存块更改,改变申请者的指向。后面会详细介绍。将双向链表指向指向内存如下所示:
假设内存池初始块数为4块,每块的大小为100个字节,则向系统申请400个字节的内存块,每块的大小为100字节。之后使用双向链表DATA指针指向内存块,每个指针能分配的大小如图所示从大到小递减。
对象内存分配:
对内存的链表指针分配好后,用户可以使用内存池进行内存分配,对于用户的内存分配有两种情况,一种是在现有的内存池中能找到合适的内存块,另一种情况是现有内的内存池没有足够的内存块来分配,需要重新向系统申请内存来满足用户的需求。下面分别就这两种内存分配情况进行说明:
情况1内存池有足够的内存块进行分配
假设用户申请了240个字节的内存空间,内存池现在有四个内存块
您可能关注的文档
- 学士学位论文—-220kv输电线路施工组织措施及施工方案1.doc
- 学士学位论文—-220kv线路施工组织设计.doc
- 学士学位论文—-240万吨csp热轧薄板厂设计说明.doc
- 学士学位论文—-280吨循环流化床设计.doc
- 学士学位论文—-15105综采工作面放顶煤开采设计说明书.doc
- 学士学位论文—-316m预应力混凝土空心板说明书.doc
- 学士学位论文—-430t直流煤粉燃烧器的设计及冷态流场的计算.doc
- 学士学位论文—-772万吨年苯甲苯连续精馏装置工艺设计精馏塔设计说明书化工设计.doc
- 学士学位论文—-1000万吨炼油项目投资建设环境评估报告书简本.doc
- 学士学位论文—-b3区道路安全专项施工方案书.doc
- 中信建投-信息技术-通信行业-北美云厂商资本开支继续高增关注算力超跌与高股息标的.pdf
- 东北证券-信息技术-通信行业北美商业航天研究-二-从护城河看北美商业航天.pdf
- 国金证券-量化观市-市场维持高波动,红利与微盘表现稳健.pdf
- 东吴证券-传媒行业点评报告-AI投入进入回报验证期,云厂商率先兑现增长闭环.pdf
- 华创证券-专题报告-A投研工具研究之一-华创金工MCP配置与使用.pdf
- 国海证券-医药生物行业AI制药专题(一)-MNC加码AI,药物研发从工具采购走向能力底座.pdf
- 国投证券-冰轮环境-000811-AIDC液冷一次侧稀缺龙头,业绩有望保持快速增长.pdf
- 申万宏源-汽车行业周报-自动驾驶和机器人不缺席AI应用.pdf
- 中信建投-医药生物-医疗器械行业周报.pdf
- 广发证券-银行业跨境流动性跟踪-货物贸易净流出额率双降.pdf
原创力文档

文档评论(0)