摘要

内存泄漏在没有垃圾回收机制的语言中是常见的问题,虽然Fortran95引入ALLOCATABLE数组解决了部分泄漏问题,但是通过指针申请内存资源仍然会造成泄漏,现有研究对Fortran内存泄漏的检测流程适配度不高且面向Fortran内存状态分析的效率和精确度上仍存在优化空间。针对这一问题,本文提出了一种面向Fortran指针引发的内存泄漏静态检测方法。首先引入指针引用控制流图(PR-CFG,Pointer Reference-Control Flow Graph)来精简程序模型,并符号化程序节点的内存状态信息,依据数据流生成路径敏感的符号化函数摘要作用于过程间分析,最终通过PR-CFG节点上由抽象内存状态计算得到的内存状态集进行故障模式状态机的状态转化来实现内存泄漏的检测。实验表明,本方法提高了Fortran指针引发内存泄漏的检测精度和效率,降低了检测的误报率。