Valgrind errors even though all heap blocks were freed

This seems obvious ... but it might be worth pointing out that the "no leaks are possible" message does not mean that your program cannot leak; it just means that it did not leak in the configuration under which it was tested.

If I run the following with valgrind with no command line parameters, it informs me that no leaks are possible. But it does leak if I provide a command line parameter.

int main( int argc, char* argv[] )
{
   if ( argc > 1 )
      malloc( 5 );
   printf( "Enter any command line arg to cause a leak\n" );
}

  1. Yes, you are greatly covered, don't think that valgrind easily can miss a leak in user code
  2. your error means that you probably have a +1 error in indexing an array variable. the lines that valgrind tell you should be accurate, so you should easily find that, provided you compile all your code with -g
  3. suppressed errors are usually from system libraries, which sometimes have small leaks or undectable things like the state variables of threads. your manual page should list the suppression file that is used by default

Tags:

C

Valgrind