1996 · 238 citations · 5 references
ComputingComputer ScienceCompilersFormal MethodsProgramming LanguagesData-flow AnalysisError DetectionStatic AnalysisStatic Code AnalysisAliasingAliasing ErrorDead Storage AnalysisMemory Corruption DetectionMemory Error DetectionMemory Leak DetectionMemory LeaksStatic Bug Detection
Many important classes of bugs result from invalid assumptions about the results of functions and the values of parameters and global variables. Using traditional methods, these bugs cannot be detected efficiently at compile-time, since detailed cross-procedural analyses would be required to determine the relevant assumptions. In this work, we introduce annotations to make certain assumptions explicit at interface points. An efficient static checking tool that exploits these annotations can detect a broad class of errors including misuses of null pointers, uses of dead storage, memory leaks, and dangerous aliasing. This technique has been used successfully to fix memory management problems in a large program.
5
David Evans, John V. Guttag, James J. Horning et al. · 1994 · 234 citations
Abstractions for recursive pointer data structures
Laurie Hendren, Joseph Hummell, Alexandru Nicolau · 1992 · 101 citations
A Memory Allocation Profiler for C and Lisp Programs
Benjamin G. Zorn, Paul Hilfinger · 1988 · 37 citations