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