发明名称 一种动态内存分配方法
摘要 本发明涉及内存分配方法技术领域,尤其涉及一种用于电力用户用电信息采集系统的动态内存分配方法,主要通过设置空闲内存链表来实现空闲内存的动态分配,这种动态内存分配方法编译后的执行文件较少、运行效率较高、管理效率较高且具有内存溢出检测。
申请公布号 CN103984639A 申请公布日期 2014.08.13
申请号 CN201410175791.1 申请日期 2014.04.29
申请人 宁波三星电气股份有限公司 发明人 郑坚江;陈杰;刘宁
分类号 G06F12/02(2006.01)I;G06F12/06(2006.01)I 主分类号 G06F12/02(2006.01)I
代理机构 宁波市鄞州甬致专利代理事务所(普通合伙) 33228 代理人 李迎春
主权项 一种动态内存分配方法,其特征在于:它包括以下步骤:(1)、初始化内存空间,设定内存初地址,将每块物理内存块分成三个部分,依次为第一部分、第二部分以及第三部分,且每个部分均包含一个信息节点头以及一个内存块,且每块物理内存块的第一部分与第三部分的内存块的大小为0K,然后将所有的物理内存块中的第二部分组合起来形成一个空闲内存链表,所述信息节点头包括使用状态信息、对应的内存块的大小信息以及指向上一个物理中相邻的内存块的地址的第一指针,且所述第二部分的内存块中还设有一个第二指针与第三指针,所述第二指针与第三指针分别指向空闲内存链表中相邻的上下两块空闲内存块的地址;(2)、等待接收请求;(3)、若接收到应用程序需要分配内存的请求,则逐一查看空闲内存链表中是否存在比需要分配内存大的空闲内存块,若存在则在此空闲内存块中分配出请求所需的内存块,若此空闲内存块分配出请求所需的内存后所剩的空闲内存小于信息节点头所需内存,则将所剩的空闲内存也分配给请求的应用程序,并且修改原先在空闲内存链表中与这个分配出去的内存块相邻的两个空闲内存块的第二指针与第三指针,然后在分配出去的内存块上增加对应的信息节点头,同时统计当前内存信息,存入统计信息,然后返回步骤(2)继续等待请求,若此空闲内存块分配出请求所需的内存后所剩的空闲内存不小于信息节点头所需内存,则修改此空闲内存块的信息节点头,然后在分配出去的内存块上增加对应的信息节点头,同时统计当前内存信息,存入统计信息,然后返回步骤(2)继续等待请求;若不存在则返回步骤(2)继续等待请求,同时记录分配失败,存入统计信息;若接收到应用程序需要释放内存的请求,首先检测需要释放的内存块的信息节点头是否合法,若检测到信息节点头非法则统计非法原因且同时显示非法原因;若检测到信息节点头合法,则根据释放的内存块的信息节点头中的第一指针将释放的内存块插入到物理内存块中,并且判断是否需要进行合并,然后返回步骤(2)继续等待请求;若接收到用户查看统计信息的请求时,导出当前的统计信息,然后返回步骤(2)继续等待请求。
地址 315131 浙江省宁波市鄞州区姜山镇明光北路1166号奥克斯工业园