Valgrind

From Linuxintro

With valgrind you can analyze your program's memory behavior.

Example:

You write a short program that has a memory leak:

#include <iostream>
using namespace std;

void pollute()
{
  int* i=new int();
  cout << i << "  ";
}

int main()
{
  { pollute(); }
}

Compile it

g++ main.cpp

and valgrind it:

 valgrind ./a.out 
==21506== Memcheck, a memory error detector
==21506== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==21506== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==21506== Command: ./a.out
==21506== 
0x5936040  ==21506== 
==21506== HEAP SUMMARY:
==21506==     in use at exit: 4 bytes in 1 blocks
==21506==   total heap usage: 1 allocs, 0 frees, 4 bytes allocated
==21506== 
==21506== LEAK SUMMARY:
==21506==    definitely lost: 4 bytes in 1 blocks
==21506==    indirectly lost: 0 bytes in 0 blocks
==21506==      possibly lost: 0 bytes in 0 blocks
==21506==    still reachable: 0 bytes in 0 blocks
==21506==         suppressed: 0 bytes in 0 blocks
==21506== Rerun with --leak-check=full to see details of leaked memory
==21506== 
==21506== For counts of detected and suppressed errors, rerun with: -v
==21506== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 6 from 6)