国内刊号:11-2560/TP
国际刊号:1000-9825
发布日期:
作者:朱亚伟,左志强,王林章,李宣东
单位:朱亚伟,计算机软件新技术国家重点实验室(南京大学), 江苏 南京 21002311,左志强,计算机软件新技术国家重点实验室(南京大学), 江苏 南京 21002302,王林章,计算机软件新技术国家重点实验室(南京大学), 江苏 南京 21002303,李宣东,计算机软件新技术国家重点实验室(南京大学), 江苏 南京 21002304
关键词:内存泄漏;内存泄漏检测;静态分析;机器学习;特征提取
基金:国家重点研发计划(2016YFB1000802);国家自然科学基金(61802168,61632015);中央高校基本科研业务费专项资金(020214380047)
内存泄漏在采用显式内存管理机制的C语言中是一种常见的代码缺陷,内存泄漏的检测方法目前主要是静态分析与动态检测.动态检测开销大,且高度依赖测试用例;静态分析目前被学术界和工业界广泛应用,但是存在大量误报,需要人工对检测结果进行确认.内存泄漏静态分析的误报通常是由于对指针、分支语句和全局变量分析的不准确性导致的.提出了一种内存泄漏的智能化检测方法,通过使用机器学习算法学习程序特征与内存泄漏之间的相关性,构建机器学习分类器,并应用机器学习分类器进一步提高内存泄漏静态分析的准确性.首先构建机器学习分类器,然后通过静态分析方法构建从内存分配点开始的Sparse Value Flow Graph(SVFG),并从中提取内存泄漏相关特征,再使用规则和机器学习分类器进行内存泄漏的检测.实验结果显示,该方法在分析指针、分支语句和全局变量时是有效的,能够提高内存泄漏检测的准确性,降低内存泄漏检测结果的误报.最后,对未来研究的可行性以及面临的挑战进行了展望.
来源:2019年第5期
《软件学报》期刊编辑部