Pruebe el heap profiler entregado con gperftools, por Google. Siempre lo construí desde fuentes, pero está disponible como precompiled package en varias distribuciones de Linux.
Es tan fácil de usar como vincular una biblioteca dinámica a sus ejecutables y ejecutar el programa. Se recopila información sobre cada asignación de memoria dinámica (por lo que he visto) y guardar en disco de un vertedero memoria cada vez que uno de los siguientes casos:
HEAP_PROFILE_ALLOCATION_INTERVAL
bytes han sido asignados por el programa (por defecto : 1 Gb)
- las aguas altas de uso de memoria de marca se incrementa en
HEAP_PROFILE_INUSE_INTERVAL
bytes (por defecto: 100 Mb)
HEAP_PROFILE_TIME_INTERVAL
segundos han transcurrido (por defecto: inactivo)
- se llama explícitamente
HeapProfilerDump()
a partir del código
La última, en mi experiencia, es el más útil porque se puede controlar exactamente cuándo tener una instantánea del uso montón y luego comparar dos instantáneas diferentes y ver lo que está mal.
Finalmente, hay varios posibles formatos de salida, como textual o gráfica (en la forma de un grafo dirigido):

uso de esta herramienta que he sido capaz de detectar usos incorrectos de memoria que No pude encontrar el uso de Massif.
Gracias, las capturas de pantalla se ven muy bien ..., creo que esto es lo que siempre he querido. – math