Estoy buscando una forma de rastrear las asignaciones de memoria en un programa C++. Estoy no interesado en fugas de memoria, que parecen ser lo que la mayoría de las herramientas están tratando de encontrar, sino en la creación de un perfil de uso de memoria para la aplicación. La salida ideal sería una gran lista de nombres de función más el número máximo de bytes asignados a lo largo del tiempo o mejor aún, una representación gráfica del montón a lo largo del tiempo. El eje horizontal es el tiempo, el espacio del montón del eje vertical. Cada función obtendría su propio color y dibujaría líneas de acuerdo con los bytes de montón asignados. Puntos de bonificación para identificar los tipos de objetos asignados también.seguimiento de las asignaciones de memoria C++
La idea es encontrar los cuellos de botella de la memoria/para visualizar qué funciones/hilos consumen la mayor cantidad de memoria y deben estar destinados a una mayor optimización.
Miré brevemente a Purify, BoundsChecker y AQ Time, pero no parecen ser lo que busco. Valgrind parece adecuado, sin embargo, estoy en Windows. Memtrack parece prometedor, pero requiere cambios significativos en el código fuente.
Mis habilidades de Google deben haberme fallado, porque no parece ser una solicitud tan poco común? Toda la información necesaria para crear una herramienta como esta debería estar disponible desde los símbolos de depuración del programa más las llamadas API en tiempo de ejecución, ¿no?
Sí, probablemente _CrtMemDumpAllObjectsSince es todo lo que está buscando. – stephan