finde das Speicherleck nicht
-
pospiech schrieb:
Wie kann ich mir anzeigen lassen zu welchen Dateien / Variablen die gehören?
Du siehst ja, in welcher Zeile und welcher Datei das Leak aufgetreten ist, dann kannst du den Fehler dort suchen.
-
Nexus schrieb:
pospiech schrieb:
Wie kann ich mir anzeigen lassen zu welchen Dateien / Variablen die gehören?
Du siehst ja, in welcher Zeile und welcher Datei das Leak aufgetreten ist, dann kannst du den Fehler dort suchen.
Ich sehe weder Datei noch Zeile:
Detected memory leaks!
Dumping objects ->
{162014} normal block at 0x00B2F740, 60 bytes long.
Data: < > 12 00 00 00 12 00 00 00 12 00 00 00 12 00 00 00
{144095} normal block at 0x00E72FF8, 24 bytes long.
Data: < > 01 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00
{162015} normal block at 0x00E6E420, 60 bytes long.
Data: < > 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00
{103487} normal block at 0x00E62910, 480 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{103486} normal block at 0x00E62740, 400 bytes long.
...EDIT: Das ursprüngliche Problem habe ich nach manuellem Suchen nach new Anweisungen auch finden können. Es fehlte, wie zu erwarten, ein delete.
Und es hatte auch nichts mit dem Code zu tun, den ich gepostet hatte.
-
Ich fürchte, dass das etwas schwieriger ist die genaue Zeile rauszukriegen. Du musst halt behutsam vorgehen und immer mal wieder auf die Ausgabe schauen, wenn du dein Programm testest, dann solltest du eigl. immer Wissen, wo im Code ein Leck möglich ist.
-
drakon schrieb:
Ich fürchte, dass das etwas schwieriger ist die genaue Zeile rauszukriegen. Du musst halt behutsam vorgehen und immer mal wieder auf die Ausgabe schauen, wenn du dein Programm testest, dann solltest du eigl. immer Wissen, wo im Code ein Leck möglich ist.
Da diese Ausgabe erst nach dem Beenden des Programms generiert wird ist das schlecht möglich.
-
pospiech schrieb:
drakon schrieb:
Ich fürchte, dass das etwas schwieriger ist die genaue Zeile rauszukriegen. Du musst halt behutsam vorgehen und immer mal wieder auf die Ausgabe schauen, wenn du dein Programm testest, dann solltest du eigl. immer Wissen, wo im Code ein Leck möglich ist.
Da diese Ausgabe erst nach dem Beenden des Programms generiert wird ist das schlecht möglich.
Naja. Wenn man plötzlich ein Leck hat, welches vorher noch nicht da war, dann hat das mit grosser Wahrscheinlichkeit damit zu tun, was du in den letzen paar Zeilen Code getan hast.
Wenn nicht, dann kann man auch noch einen richtigen Leak Detector zur Hand nehmen.
-
Verwendest du da das Makro
newfalsch? Denn dass keine Informationen über Zeile und Datei vorhanden sind, scheint mir komisch.Prüf doch mal nach, ob wirklich die Version von
newmit den drei Parametern aufgerufen wird. Wenn das in einer anderen Übersetzungseinheit steht, könnte es komplizierter werden...
-
pospiech schrieb:
{162014} normal block at 0x00B2F740, 60 bytes long.
Data: < > 12 00 00 00 12 00 00 00 12 00 00 00 12 00 00 00CrtSetBreakAlloc(162014) erzeugt einen breakpoint bei dieser allokation.
-
evtl. auch _CrtSetBreakAlloc