Limitations of Memcheck

Memcheck is not perfect; it occasionally produces false positives, and there are mechanisms for suppressing these.

However, it is typically right 99% of the time, so you should be wary of ignoring its error messages. After all, you wouldn't ignore warning messages produced by a compiler, right? The suppression mechanism is also useful if Memcheck is reporting errors in library code that you cannot change.

The default suppression set hides a lot of these, but you may come across more.

Memcheck cannot detect every memory error your program has. For example, it can't detect out-of-range reads or writes to arrays that are allocated statically or on the stack. But it should detect many errors that could crash your program (eg. cause a segmentation fault).

Try to make your program so clean that Memcheck reports no errors. Once you achieve this state, it is much easier to see when changes to the program cause Memcheck to report new errors.

Experience from several years of Memcheck use shows that it is possible to make even huge programs run Memcheck-clean.

For example, large parts of KDE, OpenOffice.org and Firefox are Memcheck-clean, or very close to it.