ComputingComputer ScienceCompilersProgramming LanguagesSafety EngineeringData TypesData-flow AnalysisType CheckingType SystemsData Type InferencePointer AnalysisProgram ComprehensionStatic Type CheckingStruct TypesType AnalysisType InferenceType Safety
The effectiveness of traditional type checking in C is limited by the presence of type conversions using type casts. Because the C standard allows arbitrary type conversions between pointer types, neither C compilers, nor tools such as lint, can guarantee type safety in the presence of such type conversions. In particular, by using casts involving pointers to structures (C structs), a programmer can interpret any memory region to be of any desired type, further compromising C's weak type system. Not only do type casts make program vulnerable to type errors, they hinder program comprehension and maintenance by creating latent dependencies between seemingly independent pieces of code. To address these problems, we have developed a stronger form of type checking for C programs, called physical type checking. Physical type checking takes into account the layout of C struct fields in memory. This paper describes an inference-based physical type checking algorithm and its implementation. Ou...
12
Efficient context-sensitive pointer analysis for C programs
Robert P. Wilson, Monica S. Lam · ACM SIGPLAN Notices · 1995 · 538 citations
Efficient context-sensitive pointer analysis for C programs
Robert P. Wilson, Monica S. Lam · 1995 · 458 citations · Full text
S. C. Johnson, Murray Hill · 1978 · 268 citations
Fast and accurate flow-insensitive points-to analysis
Susan Horwitz · 1997 · 249 citations · Full text
Static detection of dynamic memory errors
David Evans · 1996 · 238 citations · Full text