[发明专利]源代码缺陷分析中一种基于区域的内存建模方法无效
| 申请号: | 201010103371.4 | 申请日: | 2010-02-01 |
| 公开(公告)号: | CN101937390A | 公开(公告)日: | 2011-01-05 |
| 发明(设计)人: | 许中兴;张健;张* | 申请(专利权)人: | 许中兴;张健;北京测腾信息技术有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F12/02 |
| 代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
| 地址: | 100190 北京市海淀区中关村南四*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 源代码 缺陷 分析 一种 基于 区域 内存 建模 方法 | ||
1.源代码缺陷分析中基于区域的内存建模方法,其特征在于:包括下列操作步骤:
(1)从表达式到其所对应的内存区域建立第一个映射;
(2)判断是否含有赋值操作:
是,执行步骤(3);
否,执行步骤(1);
(3)从内存区域到其对应的值建立第二个映射。
2.根据权利要求1所述的方法,其特征在于:所述步骤(1)的方法为根据表达式中数据的种类建立对应的内存区域。
3.根据权利要求2所述的方法,其特征在于:所述步骤(1)的方法还包括根据不同内存区域之间关系建立区域模型。
4.根据权利要求3所述的方法,其特征在于:所述步骤(3)的方法采用数据结构实现第二个映射。
5.根据权利要求4所述的方法,其特征在于:所述建立对应的内存区域,包括下列操作步骤:
对于变量,创建与其对应的变量区域,所述变量区域包括全局变量区域和局部变量区域;
或者,对于数组元素,以该数组的变量区域以及该元素的下标为特征,创建数组元素区域;
或者,对于结构体的域,以该结构体的区域以及域的名字为特征,创建结构体域区域;
或者,对于字符串常量,建立字符串区域;
或者,对于动态分配的内存区域对应的区域为符号区域。
6.根据权利要求5所述的方法,其特征在于:建立区域模型的步骤如下;区域模型含有三个基础区域分别为栈区域、堆区域和全局存储区域,分别对应于C程序的栈、堆和全局存储;局部变量区域的父区域为栈区域;全局变量区域的父区域是全局存储区域;数组元素区域的父区域为该数组对应的区域;结构体域区域的父区域为该结构体对应的区域;字符串区域的父区域为全局存储区域;符号区域的父区域为堆区域。
7.根据权利要求6所述的方法,其特征在于:所述数据结构实现第二个映射是根据数据元素间关系的不同特性采用下列四类结构:集合结构、线性结构、树型结构或者图形结构。
8.根据权利要求4所述的方法,其特征在于:根据所述第一个映射和第二个映射进行对各种表达式的求值,步骤如下:
第一步,由表达式得到该表达式对应的唯一的内存区域;
第二步,由该内存区域得到该表达式的值。
9.根据权利要求8所述的方法,其特征在于:含有指针操作的表达式求值的步骤如下:
对于指针算术,使用其所对应的数组元素区域,进行相应的下标计算,获得新的数组元素区域作为指针算术的结果;
对于指针解引用,计算指针表达式对应的区域,然后获得该区域对应的值;
对于取地址;计算被取地址的表达式对应的区域,以该区域作为取地址运算得到的指针值。
10.根据权利要求4所述的方法,其特征在于:赋值表达式中赋值操作步骤如下:
第一步,找到被赋值的表达式所对应的内存区域;
第二步,给它所对应的内存区域映射被赋予的值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于许中兴;张健;北京测腾信息技术有限公司,未经许中兴;张健;北京测腾信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010103371.4/1.html,转载请声明来源钻瓜专利网。





