Sto cercando un modo per tenere traccia delle allocazioni di memoria in un programma C++. Sono non interessato a perdite di memoria, che sembrano essere ciò che la maggior parte degli strumenti sta tentando di trovare, ma piuttosto creare un profilo di utilizzo della memoria per l'applicazione. L'output ideale potrebbe essere una lunga lista di nomi di funzioni più il numero di byte allocati massimi nel tempo o, meglio ancora, una rappresentazione grafica dell'heap nel tempo. L'asse orizzontale è il tempo, lo spazio heap dell'asse verticale. Ogni funzione ottiene il proprio colore e traccia le linee in base ai byte heap allocati. Punti bonus per identificare anche i tipi di oggetti assegnati.traccia allocazioni memoria C++
L'idea è di trovare i colli di bottiglia della memoria/per visualizzare quali funzioni/thread consumano più memoria e dovrebbero essere mirate per un'ulteriore ottimizzazione.
Ho dato una breve occhiata a Purify, BoundsChecker e AQTime ma non sembrano essere quello che sto cercando. Valgrind sembra adatto, tuttavia, io sono su Windows. Memtrack sembra promettente, ma richiede modifiche significative al codice sorgente.
Le mie competenze di google devono avermi fallito, perché non sembra essere una richiesta così insolita? Tutte le informazioni necessarie per creare uno strumento come questo dovrebbero essere prontamente disponibili dai simboli di debug del programma più le chiamate all'API di runtime - no?
Sì, probabilmente _CrtMemDumpAllObjectsSince è tutto ciò che sta cercando. – stephan