摘要:C程序中数组、malloc动态分配后的连续内存等顺序存储结构被大量使用,但大多数传统的数据流分析方法未能充分描述其结构及其上的操作,特别是在利用指针访问顺序存储结构时,传统的分析方法只关注了指针的指向关系,而未讨论指针可能发生偏移的数值信息,且未考虑发生偏移时可能存在越界的不安全问题,导致了对顺序存储结构分析不精确.针对以上不足,首先对顺序存储结构进行抽象建模,并对顺序存储结构与指针结合使用时的指向关系与偏移量进行有效表示,建立了用于顺序存储结构的抽象内存模型SeqMM;其次,归纳总结C程序中顺序存储结构涉及的指针相关迁移操作、谓词操作及遍历顺序存储结构的循环操作,提出了安全范围判别保证操作安全性;之后,针对函数调用时形参指针引用顺序存储结构与实参的映射过程进行过程间推导规则设计;最后,基于上述分析,提出了一种内存泄漏缺陷检测算法,对5个开源C工程的内存泄漏缺陷进行检测.实验结果表明,所提出的SeqMM能够有效地刻画C程序中的顺序存储结构及其涉及的各种操作,其数据流分析结果能够用于内存泄漏的检测工作,同时在效率和精度之间取得合理的权衡.
Abstract:Sequential storage structures such as array and continuous memory block allocated dynamically by malloc are widely used in C programs. But traditional data flow analysis fails to adequately describe their structures and operations. When pointers are used to access the sequential storage structures in C programs, existing data flow analysis methods basically pay attention to only points-to information and do not consider the numerical properties offset. In addition, it does not consider the unsafe problem caused by out of bounds when offset occurs, which leads to inaccurate analysis for sequential storage structure. To improve the precision for analyzing sequential storage structures, an abstract memory model SeqMM is proposed to describe sequential storage structures, which can effectively describe points-to relationships and offset. Then there are three operations are summarized, such as the pointer-related transfer operation, predicate operation, and loop operation traversing sequential storage structures, and it is also considered that whether the index is out of bounds to ensure the security of operation execution when analyzing these operations. After that, mapping rules are introduced for parameters referencing sequential storage structure to corresponding arguments. Finally, a memory leak detection algorithm is proposed to detect memory leak in 5 open-source projects. The experimental results indicate that SeqMM can effectively describe sequential storage structure and various operations in C programs, and the results of data flow analysis can be used to detect memory leaks when a reasonable balance between accuracy and efficiency occurs.
PDF全文下载地址:
http://jos.org.cn/jos/article/pdf/5949
删除或更新信息,请邮件至freekaoyan#163.com(#换成@)
面向顺序存储结构的数据流分析
本站小编 Free考研考试/2022-01-02
相关话题/结构 程序 过程 实验 工程
基于PSP_HDP主题模型的非结构化经济指标挖掘
摘要:随着经济活动数据的不断丰富,互联网平台上产生了大量的财经文本,其中蕴含了经济领域发展状况的影响因素.如何从这些财经文本中有效地挖掘与经济有关的经济要素,是实现非结构化数据在经济研究中应用的关键.根据人工构建非结构化经济指标的局限性,以及主题模型在非结构化经济指标挖掘中存在的问题,结合已有经济领 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02宏观篇章结构表示体系和语料建设
摘要:篇章结构分析是自然语言处理领域的一个重要研究方向.篇章结构分析有助于理解篇章的结构和语义,并为自然语言处理的应用(如自动文摘、信息抽取、问答系统等)提供有力的支撑.目前,篇章结构分析主要集中在微观的层面,分析的重点是句子内部或句子与句子之间的关系和结构,而宏观层面的研究相对较少.因此,以篇章结 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02基于语义标签生成和偏序结构的图像层级分类
摘要:智能电子设备和互联网的普及,使得图像数据爆炸性膨胀.为了有效管理复杂图像资源,提出一种基于加权语义邻近集和形式概念偏序结构的图像层级分类方法.首先,根据图像语义相关分数,对不同程度语义设定自适应权系数,从训练图库中构建加权语义邻近集,通过对语义邻近集中图像的词频分布进行判决,自动生成图像的多个 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02基于代码结构知识的软件文档语义搜索方法
摘要:自然语言文本形式的文档是软件项目的重要组成部分.如何帮助开发者在大量文档中进行高效、准确的信息定位,是软件复用领域中的一个重要研究问题.提出了一种基于代码结构知识的软件文档语义搜索方法.该方法从软件项目的源代码中解析出代码结构图,并以此作为领域特定的知识来帮助机器理解自然语言文本的语义.这一语 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02多项式循环程序的秩函数探测
摘要:秩函数法是循环程序终止性分析的主流方法.针对一类多分支多项式循环程序,这类程序的秩函数计算问题被证明可归结为单形上正定多项式的探测问题,从而便于利用线性规划工具Simplex去计算这类程序的秩函数.不同于现有基于柱形代数分解的量词消去算法,该方法能够在可接受的时间内计算更为复杂的多项式秩函数. ...中科院软件研究所 本站小编 Free考研考试 2022-01-02一种基于程序功能标签切片的制导符号执行分析方法
摘要:提出了一种基于程序功能标签切片的制导符号执行分析方法OPT-SSE.该方法从程序功能文档提取功能标签,利用程序控制流分析,建立各功能标签和程序基本块的映射关系,并根据功能标签在程序执行中的顺序关系生成功能标签执行流.针对给定的代码目标点,提取与之相关的功能执行流切片,根据预定义好的功能标签流制 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02面向比特币交易网络的拓扑结构可视探索方法
摘要:分析比特币交易网络有助于人们理解交易者在比特币交易中的交易模式.比特币交易网络的匿名性和其巨大的规模使得用户很难在分析前对整个交易网络产生大致的认知.提出了一种基于拓扑结构推荐的比特币交易网络可视分析方法.核心思想是为每个节点生成一个向量化表达,在用户交互的基础上,所提算法即可检测一系列相似的 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02面向DevOps的软件工程新技术专题前言
摘要:Abstract:PDF全文下载地址:http://jos.org.cn/jos/article/pdf/5798 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02面向模式软件体系结构合成中的冲突消解方法
摘要:面向模式的软件体系结构合成主要包括两个核心活动:(1)将软件职责分配到对象类的职责合成活动;(2)减少体系结构模式约束违背的模式合成活动.但如何从以上两个核心活动生成的候选方案中无冲突地组合出最终的软件体系结构设计方案,是面向模式的软件体系结构合成所面临的挑战.以基于搜索的软件工程技术为框架, ...中科院软件研究所 本站小编 Free考研考试 2022-01-02基于SVM的多项式循环程序秩函数生成
摘要:程序终止性问题是自动程序验证领域中的一个研究热点.秩函数探测是进行终止性分析的主要方法.针对单重无条件分支的多项式循环程序,将其秩函数计算问题归结为二分类问题,从而可利用支持向量机(SVM)算法来计算程序的秩函数.与基于量词消去技术的秩函数计算方法不同,该方法能在可接受的时间范围内探测到更为复 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02