This isn't exactly helpful for the purposes of a general purpose leak-detector, so feel free to disregard
The way that I've seen most engine code-bases deal with these issues, is to simply ban the use of standard allocation routines (new/malloc/etc) as part of their coding guidelines. The only 'new' that is allowed is placement-new, and it's probably never used directly, but via an engine macro.
If you want memory, you get it from the engine's allocation API, which becomes the single place where tracking code needs to be inserted.
I agree, reducing memory leaks is best prevented than fixed later. It's an architecture design really.