Magpie is a source-to-source transformation for C programs that enables precise garbage collection, where precise means that integers are not confused with pointers
Later, to crush your hopes completely:
Precise GC requires that a C program obeys many restrictions - the same ones that apply to using conservative GC, and more - or the program can crash. For example, to use precise GC, a C program must never extract a pointer from a variable typed as long, at least not if a collection may have occurred since the value was stored in the variable.
Yeah, definitely not going to work with any large program that has been touched by an average C programmer.
These extra constraints are, however, satisfied by normal C programming practices.
-snort-