[发明专利]一种内存分配和释放的方法、装置及系统有效
申请号: | 201210407481.9 | 申请日: | 2012-10-23 |
公开(公告)号: | CN102968378A | 公开(公告)日: | 2013-03-13 |
发明(设计)人: | 熊剑 | 申请(专利权)人: | 深圳市融创天下科技股份有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 马晓亚 |
地址: | 518057 广东省深圳市南山区科*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 分配 释放 方法 装置 系统 | ||
1.一种内存分配方法,其特征在于,包括,
请求分配至少两个预置了固定内存分配量的内存堆区;
获取内存分配请求;
判断所述内存分配请求所请求分配内存的长度是否超过所述内存堆区中固定内存分配量的最大值;
如否,则根据所述长度和预置的等差系数哈希到与所述内存分配请求匹配的内存堆区,从所述匹配的内存堆区分配内存;如是,则从操作系统剩余内存空间分配内存。
2.根据权利要求1所述的内存分配方法,其特征在于,所述固定内存分配量根据预置的等差系数按照等差序列排列。
3.根据权利要求2所述的内存分配方法,其特征在于,所述步骤“请求分配至少两个预置了固定内存分配量的内存堆区”之后还包括步骤:
按照固定内存分配量的递增顺序给每个内存堆区分配序列标号;
所述“根据所述长度和预置的等差系数哈希到与所述内存分配请求匹配的内存堆区”具体为:
将所述内存分配请求所需分配内存的长度加上等差系数所得的和再除以所述等差系数从而获取序列标号;
根据所述序列标号获取所述序列标号对应的内存堆区。
4.根据权利要求3所述的内存分配方法,其特征在于,所述内存堆区包括数据区和管理区;所述数据区包括内存块;
所述管理区为链表结构,包括节点和回收链表指针,回收链表指针指向首节点;
所述内存块包括开始指针、结束指针和当前指针;
所述“从所述匹配的内存堆区分配内存”具体为:
判断所述匹配的内存堆区对应的回收链表指针是否为空,如否,则根据首节点中的地址分配固定内存分配量的内存,并将所述回收链表指针指向链表结构的下一个节点;
如是,则从当前指针指向的内存块剩余空间中分配内存,具体包括:
判断所述内存块剩余空间是否大于“固定内存分配量与内存头的和”,如是,则存储内存头并分配符合固定内存分配量的内存,更新当前指针;如否,则从操作系统未分配内存空间申请长度为“固定内存分配量与内存头的和再乘内存地址的对齐位数”的内存块,同时更新开始指针、结束指针和当前指针,并从所述内存块分配内存。
5.一种内存释放方法,其特征在于,包括,
获取内存释放请求;
判断所述内存释放请求所需要释放内存的长度是否超过所述内存堆区中预置的固定内存分配量的最大值;
如否,则根据所述长度获取序列标号,根据所述序列标号获取回收链表指针,并将所述内存释放请求对应的内存块添加到所述回收链表指针所指向的回收链表的链尾;如是,则从操作系统剩余内存空间释放内存。
6.一种内存分配装置,其特征在于,所述装置包括预置堆区模块、第一请求模块、第一判断模块、堆区分配模块和系统分配模块;
所述预置堆区模块,与所述第一请求模块相连,用于请求分配至少两个预置了固定内存分配量的内存堆区;
所述第一请求模块,与所述预置堆区模块和第一判断模块相连,用于获取内存分配请求;
所述第一判断模块,与所述第一请求模块、堆区分配模块和系统分配模块相连,用于判断所述内存分配请求所需分配内存的长度是否超过所述内存堆区中固定内存分配量的最大值,如否,则发送堆区分配指令到所述堆区分配模块;如是,则发送系统分配指令到所述系统分配模块;
所述堆区分配模块,与所述第一判断模块相连,用于接收所述第一判断模块发送的堆区分配指令,并根据所述长度和预置的等差系数哈希到与所述内存分配请求匹配的内存堆区,从所述匹配的内存堆区分配内存;
所述系统分配模块,与所述第一判断模块相连,用于接收所述第一判断模块发送的系统分配指令,并从操作系统剩余内存空间分配内存。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市融创天下科技股份有限公司,未经深圳市融创天下科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210407481.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于加热炉水冷管的包扎结构
- 下一篇:一种烧结盘