Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Memory leak detectors for C?

second the valgrind... and I'll add electric fence.


Valgrind under linux is fairly good; I have no experience under Windows with this.


If you have the money: IBM Rational Purify is an extremely powerful industry-strength memory leak and memory corruption detector for C/C++. Exists for Windows, Solaris and Linux. If you're linux-only and want a cheap solution, go for Valgrind.


Mudflap for gcc! It actually compiles the checks into the executable. Just add

-fmudflap -lmudflap

to your gcc flags.


lint (very similar open-source tool called splint)


Also worth using if you're on Linux using glibc is the built-in debug heap code. To use it, link with -lmcheck or define (and export) the MALLOC_CHECK_ environment variable with the value 1, 2, or 3. The glibc manual provides more information.

This mode is most useful for detecting double-frees, and it often finds writes outside the allocated memory area when doing a free. I don't think it reports leaked memory.


I had quite some hits with cppcheck, which does static analysis only. It is open source and has a command line interface (I did not use it in any other way).