Ich möchte etwas anbieten, das ich in der Vergangenheit manchmal verwendet habe: einen rudimentären Leckprüfer, der auf Quellenebene und ziemlich automatisch ist. Ich gebe das aus drei Gründen weg:
Vielleicht finden Sie es nützlich.
Obwohl es ein bisschen krufty ist, lasse ich mich nicht beschämen.
Obwohl es an einige Win32-Hooks gebunden ist, sollte dies leicht zu lindern sein.
Es gibt Dinge, bei denen Sie vorsichtig sein müssen, wenn Sie es verwenden: Tun Sie nichts, worauf Sie sich new
im zugrunde liegenden Code stützen müssen. Achten Sie auf die Warnungen vor Fällen, die oben in der Datei leakcheck.cpp möglicherweise übersehen werden. Beachten Sie dies, wenn Sie sich umdrehen Bei (und Behebung von Problemen mit) dem Code, der Image-Dumps ausführt, können Sie eine große Datei generieren.
Das Design soll es Ihnen ermöglichen, den Checker ein- und auszuschalten, ohne alles neu zu kompilieren, was den Header enthält. Fügen Sie die Datei leakcheck.h ein, in der Sie die Überprüfung verfolgen und einmal neu erstellen möchten. Kompilieren Sie anschließend die Datei leakcheck.cpp mit oder ohne LEAKCHECK # define'd und verknüpfen Sie sie erneut, um sie ein- und auszuschalten. Wenn Sie unleakcheck.h einschließen, wird es lokal in einer Datei deaktiviert. Es stehen zwei Makros zur Verfügung: Mit CLEARALLOCINFO () wird vermieden, dass dieselbe Datei und Zeile unangemessen gemeldet wird, wenn Sie den Zuweisungscode durchlaufen, der die Datei leakcheck.h nicht enthält. ALLOCFENCE () fügt nur eine Zeile in den generierten Bericht ein, ohne eine Zuordnung vorzunehmen.
Bitte beachten Sie auch hier, dass ich dies seit einiger Zeit nicht mehr verwendet habe und Sie möglicherweise ein wenig damit arbeiten müssen. Ich lasse es fallen, um die Idee zu veranschaulichen. Wenn sich herausstellt, dass genügend Interesse besteht, wäre ich bereit, ein Beispiel auszuarbeiten, den Code in diesem Prozess zu aktualisieren und den Inhalt der folgenden URL durch etwas Schöneres zu ersetzen, das eine anständige syntaxfarbene Auflistung enthält.
Sie finden es hier: http://www.cse.ucsd.edu/~tkammeye/leakcheck.html