Abstract
It is not easy for programmers to manipulate dynamic data perfectly. Memory errors often lead to non-deterministic system crashes. They are hard to detect at compile time since it is difficult to make sure which memory location a pointer will access by just inspecting the statements. Abstract interpretation is a method which replaces each concrete value set with different abstract value. In our method, the abstract values which replace the original memory address represent different characteristics and can be used to determine whether the usage of the pointer is safe. In order to realize aliasing, we use owner set model to figure out the relationship between pointers and dynamic data. Also, our analyzing method is flow-sensitive and context-sensitive: variables are initialized at the beginning of the program, and then updated by our method during execution. Besides, our method is path-insensitive in order to get the better efficiency and reduce the utility of memory during testing. Furthermore we make some experiments by checking real programs. Our method not only shows some actual pointer misuse, but also provides some detailed information about the warnings to help programmers with debugging.