C/C++程序内存泄漏检测和分析技术的研究与实现

来源 :北京航空航天大学 | 被引量 : 0次 | 上传用户:jeeryf
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
程序内存错误的检测是软件测试的重点和难点之一.内存泄漏的产生和体现具有隐蔽性和积累性的特征,往往容易被人们忽视.C/C++程序设计语言能够让程序员灵活而高效地进行动态堆内存的分配和释放,这是C/C++编程语言的重要优点之一;然而,由于程序的复杂性以及人类思维的局限性等主客观原因,程序员在利用C/C++编程语言这一特点管理动态内存时,很容易造成程序内存泄漏.如果不及时发现并解决程序中内存泄漏的问题,长时间运行存在内存泄漏的程序,将浪费大量宝贵的系统内存资源,从而导致系统运行速度减慢甚至系统崩溃等严重后果.为了提高软件的性能,保证软件的可靠性,检测C/C++程序的内存泄漏具有重要的意义.该文首先研究了国内外常见的内存泄漏检测方法.包括静态检测法、源代码插装法、目标码插装法、添加保护字节法等.目前各种内存泄漏检测系统仅能检测出被测程序中是否存在内存泄漏,提供分配动态内存的源代码位置信息,但缺少对内存泄漏产生路径和原因的分析.该文通过对内存泄漏动态检测法以及内存泄漏产生原因的分析与研究,提出了结合内存泄漏动态检测法、数据流分析以及程序执行路径跟踪技术的内存泄漏检测和分析方法,设计并实现了一个可支持MS Visual C++程序并且提供内存泄漏产生路径分析的内存泄漏检测和分析工具原型.首先,分析MS Visual C++Debugger内存调试机制,通过在被测程序中嵌入Visual C++的C运行时刻函数库内存调试函数来检测程序内存泄漏.然后,在SafePro/C++静态分析器CppSA的基础上,使用动态测试技术对检测出的内存泄漏结果进行数据流分析、程序执行路径分析.最后,对论文的工作进行了总结,同时也指出了今后的改进设想.
其他文献
Markov网是类似于Bayesian网的另一种进行不确定性推理的有力工具。它是用一个无向图来表示变量之间的依赖关系。图中的每一个结点表示问题域中的一个变量,两个结点不相邻表示
随着信息技术的飞速发展,软件得到了大规模的应用,从学习、工作到生活,无处不在。同时,人们对信息化的要求越来越高,导致软件设计的需求越来越庞大,软件功能越来越复杂。因此,软件设
随着Internet的快速发展与广泛应用,构件运行支撑平台作为一类新型的系统软件,提供的功能种类越来越多,甚至为同一功能提供具有不同质量的实现.因此,构件运行支撑平台必须能
基于内容的图像检索(Content-BasedImageRetrieval,简称CBIR),是目前多媒体、信息检索、人工智能、数据库等领域共同关注的一个重要研究方向。由于传统数据模式难以描述图像等
该文则从另一个角度来分析和利用超链接信息,即利用对链接文本和链接所指向页面(必要时)的内容分析来对该链接(亦即对链接所指向的网页)进行分类.页面中的链接主要分为两类,
介绍了校园一卡通系统的设计思想和实现方案,所设计的系统综合了先进的射频IC卡技术及网络通讯技术,实现校园一卡式管理。 我国的教育事业蓬勃发展,招生规模不断扩大,在校学生
近年来,国内雾霾天气频发,范围广,时间长,严重影响民众的身体健康,同时也对交通、电力和农业造成的较大威胁,雾霾的治理已经引起了政府和社会的高度关注。但由于各大城市空气
本论文课题是国家863课题:“基于国产Linux的电子办公基础与外网集成技术研究”的一部分,主要研究电子政务基本理论及其关键技术,包括三个方面的内容:电子政务平台模型与体系结构
  本文在对互联网远程教育进行组播需求分析的基础上,以应用层组播为跨域手段,结合IP组播在域内的传输优势,设计一个适用于互连网远程教育的应用层组播模型。  主要成果有:(1
该文以防御网络攻击为目标,分析与研究网络动态防御体系,探讨具有典型代表性的网络攻击的防御技术,其主要成果概括如下:1.提出了基于入侵诱骗的网络动态防御体系,对安全服务