发明名称 |
内存块有效性检测方法 |
摘要 |
本发明提供了一种内存块有效性检测方法,主要包括:获取内存管理系统中内存池的起始地址及结束地址;检索内存管理系统中的空闲内存块AVL树,收集所有空闲内存块的信息,以数组形式存储,并按照内存块地址进行由低到高排序;判断是否存在空闲块,如果是存在空闲块,检测当前空闲块的有效性,如果不存在空闲块,则检测完成;如果内存块不能通过有效性检测,则作为坏块,提示该坏块的位置以及其详细信息,再获取下一个空闲块循环检测。本发明在不扩展内存块现有组织结构以及不需要增加任何标记消耗额外内存的基础上,能有效地检测出内存管理系统中出现的内存坏块,并提示坏块位置及信息,以方便开发人员定位解决出现坏块的原因。 |
申请公布号 |
CN102789407B |
申请公布日期 |
2015.05.27 |
申请号 |
CN201210199999.8 |
申请日期 |
2012.06.18 |
申请人 |
上海斐讯数据通信技术有限公司 |
发明人 |
车任秋;罗德贵;周琳 |
分类号 |
G06F11/22(2006.01)I;G06F12/02(2006.01)I |
主分类号 |
G06F11/22(2006.01)I |
代理机构 |
|
代理人 |
|
主权项 |
一种内存块有效性检测方法,其特征在于:所述内存块有效性检测方法包括如下步骤:step1:获取内存管理系统中内存池的起始地址及结束地址,从而确定内存管理系统的范围;step2:检索内存管理系统中的空闲内存块AVL树,收集所有空闲内存块的信息,以数组形式存储,并按照内存块地址进行由低到高排序;step3:判断是否存在空闲块,如果是存在空闲块,执行step4,如果不存在空闲块,则检测完成;step4:检测当前空闲块的有效性:step4.1:如果不能通过有效性检测,则作为坏块,提示该坏块的位置以及其详细信息,再获取下一个空闲块并重复step3,即,重复判断是否还存在空闲块,如果还存在空闲块,重复检测该空闲块的有效性;如果不存在空闲块,则检测完成;step4.2:如果能通过有效性检测,则检测下一个内存块的有效性,如果能通过有效性检测,则执行step 5,如果不能通过有效性检测,则作为坏块,提示该坏块的位置以及其详细信息,再获取下一个空闲块并重复step3;step5:判断再下一个内存块是否为空闲块,如果是空闲块,重复step4;如果不是空闲块,则判断是否为最后一个分配块,如果是最后一个分配块,则检测完成,如果不是最后一个分配块,则执行step6;step6:检测该分配块的有效性,如果该分配块能通过有效性检测,则重复step 5;如果该分配块不能通过有效性检测,则作为坏块,提示该坏块的位置以及其详细信息,再获取下一个空闲块并重复step3。 |
地址 |
201600 上海市松江区广富林路4855号大业领地90号楼 |