Visual Studio _CrtDumpMemoryLeaks immer Überspringen Objekt-Dump
-
05-07-2019 - |
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
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.