[发明专利]一种内存坏块的修复方法在审
申请号: | 201310750619.X | 申请日: | 2013-12-31 |
公开(公告)号: | CN103744742A | 公开(公告)日: | 2014-04-23 |
发明(设计)人: | 陆丹宏 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 201616 上海市松*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 修复 方法 | ||
技术领域
本发明涉及内存管理技术领域,尤其涉及一种内存坏块修复方法。
背景技术
目前,基本上所有操作系统中的内存管理都采用了动态内存分配机制。在对动态分配的内存块进行使用的过程中,由于程序员的代码编写不规范或者其它原因,将会出现动态内存块的头部信息被破坏的情况,内存块一旦被破坏,系统在释放该内存块时往往会出现错误,严重的更会出现宕机。
目前,已经存在多种检测内存坏块的检测方法,例如,于2012年12月11日公开,公开号为CN102789407A的专利申请,能有效地检测出内存管理系统中出现的内存坏块,并提示坏块位置及信息。
但目前,还没有一种能够有效对被检测出来的内存坏块进行修复的方法。
发明内容
本发明需解决的技术问题是克服上述的不足,在不需要增加任何标记而消耗额外内存的条件下,提供一种能方便地检测出内存管理系统中出现的内存坏块,并提示坏块位置及信息的内存块有效性检测方法。
为解决上述的技术问题,所述内存坏块修复方法包括以下步骤:
A、内存分区创建时,在底层接口中记录最低和最高地址;
B、从最低地址往最高地址检测,发现内存坏块时执行步骤C;
C、修复所述内存坏块。
进一步的,所述步骤C包括:
C1、发现内存坏块时,找到所述内存坏块的前一个内存块;
C2、找到所述内存坏块的后一个内存块;
C3、提取并根据所述内存坏块的前一个内存块和后一个内存块的头部信息,计算出所述内存坏块已被破坏的头部信息;
C4、将计算得到的头部信息重新填充进所述内存坏块已被破坏的头部,完成修复所述内存坏块。
进一步的,C2中实现找到后一个内存块的方法包括:
C21、在发现内存坏块之后,获取下一个空闲的内存块;
C22、判断当前内存块是否有效,如果有效,则执行C23;如果无效,则当前内存块为被破坏的内存坏块,则执行C24;
C23、获取当前内存块的前一个内存块,继续判断该内存块是否有效,重复C22;
C24、判断该坏块是否为之前所述的内存坏块,如果是同一个内存坏块,则找到所述内存坏块的后一个内存块。
采用本发明方法后,在分区创建时,在底层接口中记录最低和最高地址,从最低地址往最高地址检测,发现内存坏块时对内存坏块进行修复,恢复被破坏的内存块的完整性,保证内存管理机制的正常运行和系统稳定,尤其解决多内存分区时的内存坏块修复,在多内存分区时,由于记录了内存分区的最低和最高地址,可以逐个内存分区检测,避免了只检测默认内存分区的问题。
附图说明
图1是本发明实施例内存管理系统中内存块结构示意图;
图2是本发明实施例内存坏块修复方法的流程示意图;
图3是图2中步骤C的具体方法流程图。
具体实施方式
为了使本领域相关技术人员更好地理解本发明的技术方案,下面将结合本发明实施方式的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。
下面结合附图和实施方式对本发明作进一步说明。
在内存管理系统中存在两种类型的内存块,包括:ALLOC块和FREE块。 ALLOC块为被使用、已被分配的内存块,在本文中简称分配块;FREE块为空闲的内存块,在本文中简称空闲块。
如图1所示,为内存管理系统中ALLOC块和FREE块的示意图。ALLOC块和FREE块交替存在,并且,不存在两个或两个以上的FREE块相邻,所以,FREE块后面相邻的空闲块一定为ALLOC块。并且,最后一个内存块为ALLOC块。
内存管理系统中,还分内存分区,如图中的Section A和Section B,可以理解,还可以有Section C、Section D等等,内存分区之间可以是连续的,也可以是分开的。
每个内存块(即ALLOC块和FREE块)都具有同样的结构,即包括头部信息和用户数据。一个内存块的头部信息中包含了前一个内存块的大小(prevSize)以及本内存块的自身大小(Size)。因而,中间内存块的头部信息的prevSize即为前一个内存块的大小(Size)、中间内存块的头部信息中的Size即为后一个内存块的prevSize。
如图2所示,本发明的内存坏块修复方法,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310750619.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:移动终端
- 下一篇:一种测试干式摩擦式离合器扭矩的装置