Although it's no longer being actively developed, for C and ObjC code (all I've used it for), I haven't found anything better than MSS: Memory Supervision System.
It's extremely straightforward and easy to setup; has been very accurate in my experience and I've used it to great effect to weed out any memory leaks in my applications.
To give you an idea of how easy it is to use: I compiled it into a static library, link it to my program's debug targets and put the include (import for ObjC) for the singular header into a common shared header that all the rest of my program uses, so it tracks memory across the entire program without even needed to think about it.