[发明专利]一种动态内存分配方法有效
申请号: | 201410175791.1 | 申请日: | 2014-04-29 |
公开(公告)号: | CN103984639B | 公开(公告)日: | 2016-11-16 |
发明(设计)人: | 郑坚江;陈杰;刘宁 | 申请(专利权)人: | 宁波三星医疗电气股份有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F12/06 |
代理公司: | 宁波市鄞州甬致专利代理事务所(普通合伙) 33228 | 代理人: | 李迎春 |
地址: | 315191 浙江省宁波*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 内存 分配 方法 | ||
技术领域
本发明涉及内存分配方法技术领域,尤其涉及一种用于电力用户用电信息采集系统的动态内存分配方法。
背景技术
当前现有技术用于电力用户用电信息采集系统的内存分配方法主要有以下几种:
一、使用静态内存管理;
二、使用libc库中的动态内存管理;
三、使用newlib库中的动态内存管理。
因为电力用户用电信息采集系统的内存总量较小,而且内存分为多个物理内存块,将上述三种内存管理方法应用于电力用户用电信息采集系统时会产生以下问题:编译后的执行文件过于庞大导致分配内存效率较低,占用大量程序存储区,运行效率较低且不适合内存总量较小的电力用户用电信息采集系统使用;需要将多个物理内存块分开管理,管理效率较低;没有设置内存溢出检测,在内存溢出时不能友好的提示系统死机原因。
发明内容
本发明所要解决的技术问题是:提供一种编译后的执行文件较少、运行效率较高、管理效率较高且具有内存溢出检测的动态内存分配方法。
本发明所采用的技术方案是:一种动态内存分配方法,它包括以下步骤:
(1)、初始化内存空间,设定内存初地址,将每块物理内存块分成三个部分,依次为第一部分、第二部分以及第三部分,且每个部分均包含一个信息节点头以及一个内存块,且每块物理内存块的第一部分与第三部分的内存块的大小为0K,然后将所有的物理内存块中的第二部分组合起来形成一个空闲内存链表,所述信息节点头包括使用状态信息、对应的内存块的大小信息以及指向上一个物理中相邻的内存块的地址的第一指针,且所述第二部分的内存块中还设有一个第二指针与第三指针,所述第二指针与第三指针分别指向空闲内存链表中相邻的上下两块空闲内存块的地址;
(2)、等待接收请求;
(3)、若接收到应用程序需要分配内存的请求,则逐一查看空闲内存链表中是否存在比需要分配内存大的空闲内存块,若存在则在此空闲内存块中分配出请求所需的内存块,若此空闲内存块分配出请求所需的内存后所剩的空闲内存小于信息节点头所需内存,则将所剩的空闲内存也分配给请求的应用程序,并且修改原先在空闲内存链表中与这个分配出去的内存块相邻的两个空闲内存块的第二指针与第三指针,然后在分配出去的内存块上增加对应的信息节点头,同时统计当前内存信息,存入统计信息,然后返回步骤(2)继续等待请求,若此空闲内存块分配出请求所需的内存后所剩的空闲内存不小于信息节点头所需内存,则修改此空闲内存块的信息节点头,然后在分配出去的内存块上增加对应的信息节点头,同时统计当前内存信息,存入统计信息,然后返回步骤(2)继续等待请求;若不存在则返回步骤(2)继续等待请求,同时记录分配失败,存入统计信息;
若接收到应用程序需要释放内存的请求,首先检测需要释放的内存块的信息节点头是否合法,若检测到信息节点头非法则统计非法原因且同时显示非法原因;若检测到信息节点头合法,则根据释放的内存块的信息节点头中的第一指针将释放的内存块插入到物理内存块中,并且判断是否需要进行合并,然后返回步骤(2)继续等待请求;
若接收到用户查看统计信息的请求时,导出当前的统计信息,然后返回步骤(2)继续等待请求。
步骤(3)所述的检测需要释放的内存的信息节点头是否合法包括以下步骤:
A、检测需要释放的内存块的信息节点头中的使用状态信息,若使用状态信息为未使用,则判断信息节点头非法;若使用状态信息为使用,则判断信息节点头合法;
B、检测需要释放的内存块的信息节点头,然后检测与释放的内存块相邻的前物理内存块的信息节点头,若前物理内存块的地址加上8个字节再加上前物理内存块的大小等于释放的内存块的地址,则判断释放的内存块的信息节点头合法;若不等,则判断释放的内存块的信息节点头不合法;
C、检测需要释放的内存块的信息节点头,然后检测与释放的内存块相邻的后物理内存块的信息节点头,若释放的内存块的地址加上8个字节再加上释放的内存块的大小等于后物理内存块的地址,则判断释放的内存块的信息节点头合法;若不等,则判断释放的内存的信息节点头不合法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于宁波三星医疗电气股份有限公司,未经宁波三星医疗电气股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410175791.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种双喷头式喷管
- 下一篇:电能表全失压检测方法