Frage

Ich versuche, die CRT-Erkennung von Speicherlecks zu verwenden, aber ich halte die folgende Meldung in Microsoft Visual Studio bekommen: „Erkannt Speicherlecks - Objekt-Dump-Skipping“ Ich kann nie die es bekommen, um tatsächlich tun und Objekt-Dump.

Ich folgte den Anweisungen im Microsoft-Artikel auf einem Memory Leak Detection ( http://msdn.microsoft.com/en-us/library/e5ewb1h3 (VS.80) aspx ) ohne Glück.

In meinem stdafx.h Ich habe (das gesamte Projekt neu erstellt):

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

In der Einstiegspunkt meiner Bewerbung habe ich:

_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

Ich hoffe auch, dass es die Dateinamen und die Zeilennummer angezeigt wird in der Microsoft-Format ausgeschrieben:

Detected memory leaks!
Dumping objects ->
C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18} 
normal block at 0x00780E80, 64 bytes long.
 Data: <                > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.

Während ich habe nie in der Lage gewesen, auch ein Objekt-Dump, aber ich habe bemerkt, dass andere Leute sagen, dass sie etwas in diese Richtung zu sehen (auch mit _CRTDBG_MAP_ALLOC definiert):

Detected memory leaks!
Dumping objects ->
{18} normal block at 0x00780E80, 64 bytes long.
 Data: <                > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.

Ich will nicht wirklich Zeit, das Überschreiben der neuen verbringen und löschen Betreiber, so dass ich hatte gehofft, dass die CRT-Debugging mir helfen würde. Wenn dies nicht funktioniert, ich könnte die neue zwingende am Ende und lösche Operatoren, aber ich mag die Zuordnungsinformationen mit einem Dateinamen und die Zeilennummer (Kreuz Finger) erhalten.

Danke, Kiril

War es hilfreich?

Lösung

ich es nicht hier auf meinem Rechner haben, aber wenn Sie MSVC instal haben Sie die Möglichkeit, die Installation (die meisten der) Quellcode für die C-Laufzeitbibliothek (das heißt für MSVCRTxx.xxx). Wenn Sie in diesem Quellcode suchen „Überspringen Objekt dump“ dann könnten Sie in der Lage sein, herauszufinden, warum das Objekt Dump übersprungen wird.

Andere Tipps

von Visual Leak Detector nur verwendet nach mit keine Dateinamen eine große Müllhalde von durchgesickert Objekte bekommen / Zeilennummern die _CrtDumpMemoryLeaks nähern. VLD wie in der Werbung gearbeitet (kostenlos) und ich bin ziemlich zufrieden.

Der Grund, Dateinamen und Zeile gedruckt ist, weil die Zuordnung eines new Makro verwenden, die __FILE__ und __LINE__. passiert getan wurde Wenn Sie new berühren Sie nicht wollen, werden Sie nicht __FILE__ und __LINE__ an die CRT werden vorbei und es in der Lage, das nicht gedruckt werden. Es ist keine große Magie hier beteiligt, wirklich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top