VEs ging darum, dass der Speicherbedarf einer Anwendung langsam aber kontinuierlich gestiegen ist. (...) Am Ende war es natürlich nur ein fehlendes Free im Destructor einer komplexen Datenstruktur.
Ja, wenn beim Beenden des Programms aufgeräumt wird, sind Memory Leaks nicht mehr so leicht zu entdecken.
Mit dem schon genannten FastMM(4) ist es möglich (anstatt der Memory Leak Auflistung am Programmende) eine Liste der belegten Blöcke zu erstellen, und periodisch in einer Datei zu speichern. (Zum Beispiel alle 30 Sekunden). Wenn man diese dann mit einem Editor öffnet und regelmäßig aktualisiert, kann man erkennen, ob ein Memory Leak im vom Memory Manager verwalteten Speicher besteht.
Dazu habe ich vor Jahren eine kleine Demo-Anwendung erstellt. Hier ist ein Link zu einem Artikel, mit einem Screenshot:
https://mikejustin.wordpress.com/201...almm-new-demo/
(die Links im Artikel sind nicht mehr funktional)
(Es war einmal eine Demo für das jetzige Daraja HTTP Framework)
Die Grafik ist keine Zeitlinie, sondern zeigt an, wie viele Instanzen für welche Blockgrößen jeweils existieren. Wenn zu einer der Blockgrößen immer höhere Werte erreicht werden, ist das ein Indiz für ein Leak.