wxWidgets Memory Leaks finden
-
Hallo,
ich hab mein wxWidgets 2.8.10 neu kompeliert mit den Einstellungen um das ganze wxDebug-Zeug zu haben. Mein Visual Studio hat in meiner Anwendung ein Memory-Leak gemeldet, das ich einfach nicht finden kann.
#define wxUSE_DEBUG_CONTEXT 1 #define wxUSE_MEMORY_TRACING 1 #define wxUSE_GLOBAL_MEMORY_OPERATORS 0 #define wxUSE_DEBUG_NEW_ALWAYS 1 #define wxUSE_ON_FATAL_EXCEPTION 1 #define wxUSE_STACKWALKER 1 #define wxUSE_DEBUGREPORT 1
das klappt auch. Nur seit ich nun mit dieser wxWidgets-Version arbeite, meldet mein Visual Studio keine Memory-Leaks mehr, auch nicht wenn ich absichtlich ein
wxString *thing = new wxString(_T("Hallo"));
einbaue und den Zeiger nicht lösche.
Ich habe dann in meiner OnInit() folgendes eingebaut:
wxDebugContext::SetCheckpoint();
und in meiner d'tor der App-Klasse folgendes:
wxDebugContext::Dump(); wxDebugContext::PrintStatistics(true);
laut Doku müssten mir nun unendlich viele Informationen über meinen Speicher gegeben werden. Aber alles was ich bekomme ist ein:
----- Memory dump ----- wxFont at 0xDF3170, size 8 ----- Memory statistics ----- 1 objects of class wxFont, total size 8 Number of object items: 1 Number of non-object items: 0 Total allocated size: 8
Was jetzt nicht wirklich hilfreich ist. Mein Absichtlicher wxString* ist da nicht drinnen und sowas wie ne Zeilennummer oder eine .cpp-Datei steht da auch nicht.
Was mache ich falsch?
Ich hätte das so verstanden, dass wenn ich "#define wxUSE_DEBUG_NEW_ALWAYS 1 setze" ich dann auch Zeilennummern und Datei bekomme und auch die Speicheradresse bei der Reservierung.
Gruß,
Stefan
-
Evtl. gilt das nicht für wxString
sonst ka.
-
Von der wxWidgets-Seite:
http://docs.wxwidgets.org/stable/wx_debuggingoverview.html#debuggingoverviewwxDebugContext overview schrieb:
wxDebugContext::SetCheckpoint();
wxDebugContext::SetFile("c:\\temp\\debug.log");
wxString *thing = new wxString;
char *ordinaryNonObject = new char[1000];
wxDebugContext::Dump();
wxDebugContext::PrintStatistics();Sollte also eigentlich schon auch bei wxString gehen?!?!?