[发明专利]内存块有效性检测方法有效
申请号: | 201210199999.8 | 申请日: | 2012-06-18 |
公开(公告)号: | CN102789407A | 公开(公告)日: | 2012-11-21 |
发明(设计)人: | 车任秋;罗德贵;周琳 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
主分类号: | G06F11/22 | 分类号: | G06F11/22;G06F12/02 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 201600 上海市松江*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 有效性 检测 方法 | ||
【技术领域】
本发明涉及一种内存块有效性检测方法,尤其是涉及嵌入式系统中内存块的有效性检测方法。
【背景技术】
针对内存块有效性的检测的方法,例如,内存访问越界的检测方法,现有技术中的解决方案,往往是在内存管理系统中通过扩展内存块组织结构,在访问时设置各类标记,并且经过特殊的中间接口进行。在检测过程中,通过检查扩展的内存块结构标记,判断内存是否发生越界。
对于嵌入式系统而言,内存资源是非常宝贵的,通过扩展内存块组织结构,设置各类标记,可以一定程度上检测出访问越界的情况,但是必然会增加内存资源的附加消耗,而且随着内存块的增加,消耗的程度更加明显,这将导致实际可用的内存大小被削减。
如:公开号CN 100487658C,公开日为2009年5月13日的中国专利还揭示了一种内存访问越界的检测方法,该检测方法的主要步骤是:在应用程序所申请内存块的前端增加申请该内存块的调用代码地址信息,尾端增加保护字和空闲区长度信息,同时,在空闲区填充保护标记,当应用程序释放内存时,检测是否存在内存写入越界,并提示相关的异常信息。该检测方法设置了保护标记,增加内存资源的附加消耗,而且随着内存块的增加,消耗的程度更加明显,这将导致实际可用的内存大小被削减。
【发明内容】
本发明需解决的技术问题是克服上述的不足,在不需要增加任何标记而消耗额外内存的条件下,提供一种能方便地检测出内存管理系统中出现的内存坏块,并提示坏块位置及信息的内存块有效性检测方法。
为解决上述的技术问题,本发明设计了一种内存块有效性检测方法,其包括如下步骤:
step1:获取内存管理系统中内存池的起始地址及结束地址,从而确定内存管理系统的范围;
step2:检索内存管理系统中的空闲内存块AVL树,收集所有空闲内存块的信息,以数组形式存储,并按照内存块地址进行由低到高排序;
step3:判断是否存在空闲块,如果是存在空闲块,执行step4,如果不存在空闲块,则检测完成;
step4:检测当前空闲块的有效性:
step4.1:如果不能通过有效性检测,则作为坏块,提示该坏块的位置以及其详细信息,再获取下一个空闲块并重复step3,即,重复判断是否还存在空闲块,如果还存在空闲块,重复检测该空闲块的有效性;如果不存在空闲块,则检测完成;
step4.2:如果能通过有效性检测,则检测下一个内存块的有效性,如果能通过有效性检测,则执行step5,如果不能通过有效性检测,则作为坏块,提示该坏块的位置以及其详细信息,再获取下一个空闲块并重复step3;
step5:判断再下一个内存块是否为空闲块,如果是空闲块,重复step4;如果不是空闲块,则判断是否为最后一个分配块,如果是最后一个分配块,则检测完成,如果不是最后一个分配块,则执行step6;
step6:检测该分配块的有效性,如果该分配块能通过有效性检测,则重复step5;如果该分配块不能通过有效性检测,则作为坏块,提示该坏块的位置以及其详细信息,再获取下一个空闲块并重复step3。
本发明检测内存块管理系统中各个内存块的有效性时,自第一个空闲块开始,依序向后检测各个空闲块的有效性。这样可以检测出更多的坏块。
在上述检测内存块的有效性时,所采用的方法包括:(1)、内存块地址是否对齐,如果不对齐,则该内存块为坏块,如果对齐,则该内存块有效。(2)、检测内存块地址是否超过内存系统的管理范围,如果超出,则该内存块为坏块,如果不超出,则该内存块有效。(3)、检测内存块的大小是否对齐(什么大小?空气大小、与谁对齐?),如果对齐,则该内存块为坏块,如果不对齐,则该内存块有效。(4)、检测内存块的大小是否超出内存系统管理的范围,如果超出,则该内存块为坏块,如果不超出,则该内存块有效。(5)、检测内存块的前后块地址是否超出内存系统管理的范围,如果超出,则该内存块为坏块,如果不超出,则该内存块有效。
作为本发明进一步改进,执行step4.2时,在检测下一个内存块的有效性之前,检查该下一个内存块是否连续,若不连续,则说明该下一个内存块的头部信息被破坏,则为坏块,提示该坏块的位置以及其详细信息,不再进行有效性检测;如果连续,再继续进行有效性检测。
作为本发明进一步改进,在执行step6时,检测该分配块的有效性之前,也先检查该分配块是否连续,若不连续,则说明该分配块的头部信息被破坏,则为坏块,提示该坏块的位置以及其详细信息,不再进行有效性检测;如果连续,再继续进行有效性检测。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210199999.8/2.html,转载请声明来源钻瓜专利网。