检索规则说明:AND代表“并且”;OR代表“或者”;NOT代表“不包含”;(注意必须大写,运算符两边需空一格)
检 索 范 例 :范例一: (K=图书馆学 OR K=情报学) AND A=范并思 范例二:J=计算机应用与软件 AND (U=C++ OR U=Basic) NOT M=Visual
机构地区:[1]国防科学技术大学计算机学院并行与分布处理国家重点实验室,长沙410073 [2]国防科学技术大学计算机学院计算机系,长沙410073
出 处:《计算机研究与发展》2012年第9期1832-1842,共11页Journal of Computer Research and Development
基 金:国家自然科学基金项目(61120106006;90818024);国家"八六三"高技术研究发展计划基金项目(2011AA010106)
摘 要:堆操作程序通过共享易变数据结构可灵活地申请、合并、删除堆内存.这类程序的内存泄漏检测要求精确的域敏感的指针别名信息,变得尤其复杂和难以处理.针对这个问题,提出了基于"指针扩展类型"域敏感的堆内存抽象方法,对指针变量在形态上的排列关系进行抽象以支持堆的局部推理.首先,定义了各种基本语句的操作语义,然后基于该抽象方法采用前向数据流迭代算法提出了一种新的内存泄露检测算法.在Crystal编译框架下实现了面向C程序的内存泄漏检测原型工具Heapcheck,该工具支持复杂数据结构内指针型数据域上的内存泄露检测.在典型基准C程序上的实验结果分析表明,该方法与现有的技术相比在效率和精度上都具有优势.There are many operations about shared and mutable data structures in heap-manipulating programs, such as allocation, combination, separation, deletion, and so on. Therefore, memory leak detection for these programs requires precise field-sensitive pointer alias information, which becomes more complex and harder to deal with. A novel field-sensitive heap abstraction approach based on extended pointer types is proposed for heap-manipulating programs in this paper. The approach computes the local layout around pointer variables in the heap, and therefore supports local reasoning for heap. The pointer alias sets are computed about the memory cells, which are reached by the pointer along various pointer fields in the given abstract distance domain. Various operation semantics about all basic statements based on extended pointer types are defined and a new algorithm runs typical forward dataflow iteration analysis to see whether there are any memory leaks. Our algorithm also supports both intra- and inter- procedural analysis. We have implemented the prototype tool (Heapcheck) for C programs in the Crystal open compiler framework to support detecting memory leaks about different pointer fields in complex data structures. Experimental evaluation about a set of C benchmark programs shows that the proposed approach has better scalability and precision than current work.
关 键 词:堆操作程序 指针扩展类型 堆局部抽象 内存泄漏检测 数据流迭代 静态分析
分 类 号:TP311[自动化与计算机技术—计算机软件与理论]
正在载入数据...
正在载入数据...
正在载入数据...
正在载入数据...
正在载入数据...
正在载入数据...
正在载入数据...
正在链接到云南高校图书馆文献保障联盟下载...
云南高校图书馆联盟文献共享服务平台 版权所有©
您的IP:3.145.167.178