[发明专利]解决频繁分配释放同等大小内存的方法有效

专利信息
申请号: 200510060795.6 申请日: 2005-09-16
公开(公告)号: CN1740975A 公开(公告)日: 2006-03-01
发明(设计)人: 卜佳俊;陈纯;方丰平;柯化成 申请(专利权)人: 浙江大学
主分类号: G06F9/46 分类号: G06F9/46;G06F12/02
代理公司: 杭州求是专利事务所有限公司 代理人: 林怀禹
地址: 310027浙*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种解决频繁分配释放同等大小内存的方法。本发明的方法通过维护一个可以扩展的内存池的链表,用函数来动态控制内存池链表中内存池的大小和内存池的数量。用链表来管理内存池,避免了一般内存池分配方式在内存池不够大的情况下,需要扩展原来的内存池,不能扩展的时候不得不重新分配更大的内存块作为内存池,导致内存碎片增多,不断的扩展内存池又导致了频繁分配内存的情况。用函数来控制分配的内存池的大小和数量,使得应用程序能更有效的利用内存和节约内存,提高应用程序内存的可定制性。
搜索关键词: 解决 频繁 分配 释放 同等 大小 内存 方法
【主权项】:
1一种解决频繁分配释放同等大小内存的方法,其特征在于:1)记频繁分配释放同等大小内存的大小为msize,内存池链表的指针为plist,第n个内存池为mpn,内存池的起始地址为psn,结束地址为pen,内存池的第一个free标志的内存在该内存池的位置为freen;2)定义一个函数f(n)用来决定第n个内存池的大小,f(n)值等于0或者小于0,则表示应用程序设定了大小为msize的内存块的个数上限,大小为前面n-1次分配的内存块的个数的和;3)当应用程序需要大小为msize的内存时,则从内存池链表的第一个内存池开始,逐个判断内存池的freen是否大于f(n);如果freen小于等于f(n),表示该内存池有空闲内存可以分配,返回该内存池;如果freen大于f(n),表示该内存池没有空闲内存可以使用,判断下一个内存池;如果没有下一个内存池,并且f(n)>0,那么新建一个大小为F(n)的内存池,其中F(n)=(msize+标志位大小)*f(n);同时初始化所有的标志位为free,初始化freen为1,然后返回该内存池;如果f(n)<=0,则通知应用程序已达内存上限;4)得到有空闲内存可以使用的内存池以后,把该内存池的位置为freen的内存给应用程序使用,同时把位置为freen的内存的标志设为used,然后从位置freen+1开始,逐个判断内存池的内存的标志是否为free,如果在内存池结束前找到标志为free的内存,则令该内存池的freen等于找到的标志为free的内存所在的位置,如果没找到标志为free的内存,则令该内存池的freen等于f(n)+1;5)当应用程序释放大小为msize的内存时,则把该内存的标志设为free,同时判断该内存在所在内存池的位置是否大于所在内存池的freen,如果小于freen,则令freen等于该内存在所在内存池的位置;6)应用程序退出的时候,销毁内存池链表中的所有内存池。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/200510060795.6/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top