Visual Studio 2008 (C ++) Speicherleckerkennung zeigt Speicherort der Datei / Methode nicht an - wie funktioniert das?
Ich benutze dieAnleitung finden Sie hier um zu versuchen, Speicherlecks in einer Win32-Anwendung zu finden. Wie beschrieben habe ich die
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
Zeilen am Anfang einer Datei (die CPP-Datei, die WINAPI _tWinMain enthält) und dann am Exit-Point von WinMain, die ich hinzugefügt habe
_CrtDumpMemoryLeaks();
Leider sehe ich die Zeilennummern / Orte für die Lecks nicht (aber ich bekomme eine Liste von Lecks).
Ich habe auch versucht zu setzen
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
_CrtSetReportMode ( _CRT_ERROR, _CRTDBG_MODE_DEBUG);
zu beginn von winmain - und wieder kein glück.
Ich finde das seltsam, weil ich normalerweise keine Probleme hatte, jemals Lecks zu finden oder sie automatisch melden zu lassen.
Dies ist eine riesige, alte Legacy-App, an der ich für einen neuen Arbeitgeber arbeite. In der Vergangenheit habe ich mit dem Standard-VS-Assistenten gearbeitet.
Irgendwelche Vorschläge, wie man Quellzeilen / -methoden erhält, die die Lecks verursachen? (oder zumindest die leitungen für die "neuen" anrufe?
BEARBEITEN:
Ich habe auch versucht, visuelle Lecksucher - ohne Erfolg.
Sehr eigenartig.
BEARBEITEN
Ich habe versucht, die unten aufgeführte Neudefinition von new zu verwenden. Beim Kompilieren von boost werden jedoch Fehler angezeigt.