Service: C/C++ Tipps: Speicherfresser (Memory Leaks) ermitteln


Es stehen vielfältige Methoden zur Verfügung, um Speicherverbrauch (Speicherlöcher) in Programmen zu erkennen und zu beseitigen. Um nur einige zu nennen:

* Siehe dazu auch den hervorragenden Artikel If broken it is, fix it you should von Tess Ferrandez.

In manchen Situationen kann aber auch der Leistungsmonitor (perfmon.exe), der zu Windows gehört, von großem Nutzen sein. Diese Erfahrung konnte ich jedenfalls machen, als ich nach einem Fehler in CButtonST suchen musste.

Dazu habe ich PerfMon.exe mit folgenden Einstellungen auf meine Anwendung 'losgelassen':

Damit konnte ich in kürzester Zeit ermitteln, dass der Speicherverbrauch immer, wenn ein Dialog geladen war, der CButtonSt verwendet, einsetzt und sofort zu Ende ist, wenn der Dialog geschlossen wird.

Hinweise zum Bildschirmfoto

In einer englischsprachigen Version von Windows heisst der Leistungsindikator 'Auslagerungsseiten (Bytes)' statt dessen 'Pool Paged Bytes'.

Der Eintrag 'PSSUI' in der Liste 'Instanzen wählen' ist der Name der Bedieneroberfläche, die ich entwickelt habe und muss ggf. durch den entsprechenden Namen Ihrer Software ersetzt werden.

Sonstige Anmerkungen

Diese Art der Fehlersuche konnte in diesem speziellen Fall unter anderem dehalb so leicht erfolgen, weil der Fehler erst nach einem neuen Release auftrat. Deswegen war nachvollziehbar, welche Änderungen seit dem letzten Release durchgeführt wurden. So war es möglich, die Anzahl der möglichen Fehlerquellen von vorne herein auf ein gewisses Maß zu beschränken.

Davon abgesehen, kann es ganz nützlich sein, jede Anwendung vor einem Release mit diesem Mechanismus zu prüfen, um eventuell verborgenen Speicherfressern auf die Spur zu kommen.

Falls Sie der Meinung sind, dass die Gestaltung des Dialogs alles andere als gelungen ist: Es geht auch besser!

Ein Wort des Dankes

Die Idee zu dieser Vorgehensweise gab mir ursprünglich Herr Stefan Falk, hervorragender Programmierer mit jahrzehntelanger Erfahrung und Inhaber von Stefan Falk Software-Beratung.

Ich bedanke mich bei Herrn Stefan Falk für diese und andere Ideen und Anregungen in vielen Jahre sehr angenehmener Zusammenarbeit.

Seitenanfang

Kontaktaufnahme- und Terminvereinbarung:

Bei Fragen und für Terminvereinbarungen erreichen Sie uns unter:

0 63 49 99 07 38

0 151 51 95 34 00

Oder nutzen Sie das Kontaktformular




Ihr Ansprechpartner:


Hier sollte das Fahnungsfoto zu sehen sein.

Ralf Kunsmann

Spezialist für VBA-Programmierung
(alle Office-Anwendungen)
Entwickler der
VBA-Extension-Tools