2010-01-28 6 views
10

Ich versuche _CrtDumpMemoryLeaks() zu verwenden, um Speicherverluste in meinen Programmen anzuzeigen.Verwendung _CrtDumpMemoryLeaks()

Es wird jedoch nichts angezeigt, außer dass 0 zurückgegeben wird, wenn kein Speicherleck vorhanden ist, und 1, wenn ein Leck vorliegt.

Die link hier zeigt die Ausgabe sein sollte:

Detected memory leaks! 
Dumping objects -> 
D:\VisualC++\CodeGuru\MemoryLeak\MemoryLeak.cpp(67) : {60} 
normal block at 0x00324818, 4 bytes long. 
Data: <, > 2C 00 00 00 
Object dump complete. 

jemand die richtige Art und Weise der Verwendung dieser Funktion vorschlagen kann.

+0

Ich habe das gleiche Problem. Haben Sie die Ursache des Problems gefunden? – Horcrux7

+0

http://msdn.microsoft.com/en-us/library/fxszt639%28VS.80%29.aspx In meinem Fall habe ich die Berichtsmodi nicht eingestellt. Versuchen Sie das Beispielprogramm, das in dem Link zur Verfügung gestellt wird, und Sie werden in der Lage sein, die Ausgabe – pankajt

Antwort

17

Laden Sie die Probe von der folgenden link herunter. Sie müssen die folgenden Parameter einstellen, um die Ausgabe an die Konsole zu leiten.

// Send all reports to STDOUT 
    _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); 
    _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT); 
    _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); 
    _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT); 
    _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); 
    _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT); 
3

Nach der Suche, warum es in meinem Code nicht funktionieren finde ich die Folge Punkte:

  • Wenn diese Methode Druck nichts da kein erfasster Leck dann.
  • Nicht alle Zuweisungsmethoden sind betroffen. Zum Beispiel CoTaskMemAlloc sind nicht betroffen.
  • Die Warnung muss mit _CrtSetReportMode und _CrtSetReportFile aktiviert werden.
+0

Dank für das Teilen der Informationen zu sehen – pankajt

Verwandte Themen