Ich arbeite an einem Spiel mit SDL in Visual Studio 2010. Ich bin auf das _CrtDumpMemoryLeaks()
Makro gestoßen und dachte, ich würde es versuchen. Das Aufrufen von _CrtDumpMemoryLeaks()
führt Speicherverluste in das Ausgabefenster aus, aber es zeigt nicht, wo es passiert.C++ - Speicherlecktest mit _CrtDumpMemoryLeaks() - Gibt keine Zeilennummern aus
Ich habe den MSDN-Artikel unter Memory Leak Detection Enabling gelesen, und es erklärt, dass, wenn ich _CRTDBG_MAP_ALLOC
definiere es sollte die Zeilennummer der beanstandeten Anweisung ausgeben. In meinem Fall passiert das nicht. (Ich konnte es jedoch zum Laufen bringen, wenn ich malloc() direkt benutze - nicht mit 'neu').
Der Code:
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int *var = new int(5);
_CrtDumpMemoryLeaks();
return 0;
}
Der Ausgang ist die folgende:
Detected memory leaks!
Dumping objects ->
{58} normal block at 0x007D1510, 4 bytes long.
Data: < > 05 00 00 00
Object dump complete.
If _CrtDumpMemoryLeaks()
zur Ausgabe von Zeilennummern nicht in der Lage ist, bei der Verwendung von ‚neue‘ dann Vorschläge für andere Möglichkeiten, die Zuteilung eines ähnliches Verhalten zu erreichen, wird geschätzt.
Das ist MFC nur – humbagumba
Nein, es funktioniert einwandfrei ohne MFC. – msteiger
Erstens, dies neu definiert, was ein bisschen schrecklich ist und bricht jede bestehende Platzierung neue Nutzungen; Zweitens benötigt es eine gültige Definition für 'DEBUG_NEW', die nur in einer Standard-VC-Installation in' afx.h' bereitgestellt wird, die sehr viel ein MFC-Header ist. –