[发明专利]一种动态内存中野指针的确定及定位方法在审
| 申请号: | 201810480467.9 | 申请日: | 2018-05-18 |
| 公开(公告)号: | CN108762920A | 公开(公告)日: | 2018-11-06 |
| 发明(设计)人: | 杨海峰 | 申请(专利权)人: | 四川斐讯信息技术有限公司 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50 |
| 代理公司: | 上海硕力知识产权代理事务所(普通合伙) 31251 | 代理人: | 郭桂峰 |
| 地址: | 610100 四川省成*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 指针 动态内存 子单元 地址相关 数据发生 定位野 筛查 释放 | ||
1.一种动态内存中野指针的确定方法,其特征在于,包括:
依程序中的内存分配请求分配动态内存,并将正常分配下的内存分配请求信息保存;
释放所述分配的动态内存后,在所释放的动态内存的各个子单元内写入预定数据;
再次分配所述释放的动态内存时,先检查所述动态内存各个子单元中的数据与相应子单元的预定数据是否一致;若存在一个或多个子单元不一致,则所述程序中存在野指针,若各子单元都一致,则所述程序中不存在野指针。
2.根据权利要求1所述的确定方法,其特征在于,所述依内存分配请求分配动态内存时的动态内存是否可正常分配的判断方法为:分配前,检查动态内存各子单元内的数据与所述动态内存初始化时相应子单元存入的数据是否一致;若各子单元都一致,则所述动态内存可正常分配,若存在一个或多个子单元不一致,则所述动态内存不可正常分配。
3.根据权利要求1所述的确定方法,其特征在于,所述保存的内存分配请求信息包括:所述动态内存各子单元地址相关的函数、以及所述函数所在的程序文件或所述程序文件的文件名。
4.根据权利要求3所述的确定方法,其特征在于,所述保存的内存分配请求信息还包括:所述动态内存各子单元地址相关的函数在所述程序文件中所处的行的行号。
5.根据权利要求1所述的确定方法,其特征在于,释放所述分配的动态内存后,还进行分配、释放动态内存的循环至少一次,检查所述动态内存各子单元中的数据与相应子单元的预定数据是否一致的再次分配为最后一次循环后的分配所述释放的动态内存;每次在所释放的动态内存对应子单元内写入的预定数据相同;
所述分配、释放动态内存的循环包括:
依程序中的内存分配请求分配动态内存,并将正常分配下的内存分配请求信息保存;
释放所述分配的动态内存后,在所释放的动态内存的各个子单元内写入预定数据。
6.根据权利要求5所述的确定方法,其特征在于,所述释放动态内存时,还创建动态内存释放历史记录表,所述动态内存释放历史记录表用于:每次释放分配的动态内存时,存入前一步骤分配动态内存时保存的内存分配请求信息。
7.一种动态内存中野指针的定位方法,其特征在于,包括:
根据权利要求1至4任一项所述的野指针的确定方法,若程序中存在野指针,根据其内数据与预存数据不一致的一个或多个子单元的地址,查找所述内存分配请求信息中对应该一个或多个子单元地址的函数,以定位持有野指针的函数。
8.一种动态内存中野指针的定位方法,其特征在于,包括:
根据权利要求5所述的野指针的确定方法,若程序中存在野指针,根据其内数据与预存数据不一致的一个或多个子单元的地址,筛查各次动态内存分配的所述内存分配请求信息中对应该一个或多个子单元地址的函数,以定位持有野指针的函数。
9.一种动态内存中野指针的定位方法,其特征在于,包括:
根据权利要求6所述的野指针的确定方法,若程序中存在野指针,根据其内数据与预存数据不一致的一个或多个子单元的地址,查找所述动态内存释放历史记录表,筛查各表项的所述内存分配请求信息中对应该一个或多个子单元地址的函数,以定位持有野指针的函数。
10.根据权利要求9所述的定位方法,其特征在于,逐次筛查各表项时,越靠近最后一次释放动态内存,越先筛查。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川斐讯信息技术有限公司,未经四川斐讯信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810480467.9/1.html,转载请声明来源钻瓜专利网。





