Memory Fehler beim Beenden
-
Ich bekomme beim Beenden Fehler folgender Art:
Warning: destroying CSingleDocTemplate with live document.
Detected memory leaks!
Dumping objects ->
{59042} normal block at 0x34C21A28, 65536 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{59041} normal block at 0x34C119E8, 65536 bytes long.
Data: < W1 ] dH AIb?> A8 57 31 81 FD 19 5D BF 64 48 8A 89 41 49 62 3F
{59032} normal block at 0x34C019A8, 65536 bytes long.
Data: <@i Y?@N a > 40 69 87 84 CD FD 59 3F 40 4E CD 95 1D A2 61 BF
{59031} normal block at 0x34BF1968, 65536 bytes long.
Data: < F :7 ?> 00 AB D9 80 46 94 88 BF C0 9E CE 3A 37 09 92 3F
{59022} normal block at 0x34BE1928, 65536 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{59021} normal block at 0x34BD18E8, 65536 bytes long.
Data: < W1 ] \H AIb?> A0 57 31 81 FD 19 5D BF 5C 48 8A 89 41 49 62 3F
{59012} normal block at 0x34BC18A8, 65536 bytes long.In meinem Fall habe ich eine Simulation mehrere Tausendmal durchlaufen lassen und diese Fehlermeldungen kamen beim Beenden ebenfalls mehrere Tausend mal.
EDIT:
Den Fehler in meinem Code habe ich gefunden, es fehlten zwei delete Anweisungen.Dafür habe ich aber immernoch Fehlermeldungen folgender Art (komplett)
Detected memory leaks!
Dumping objects ->
{2263} normal block at 0x01128F48, 136 bytes long.
Data: < ?&% ?> 00 00 00 00 00 00 F0 3F 26 25 D1 A3 8D D8 EF 3F
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {306} normal block at 0x0035B8F0, 30 bytes long.
Data: < 9Px > AC 39 50 78 06 00 00 00 06 00 00 00 01 00 00 00
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {229} normal block at 0x0035DE68, 36 bytes long.
Data: < 9Px > AC 39 50 78 09 00 00 00 09 00 00 00 01 00 00 00
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\array_p.cpp(110) : {226} normal block at 0x0035B370, 20 bytes long.
Data: < d 5 > 00 00 00 00 64 A6 35 00 00 00 00 00 CD CD CD CD
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\array_p.cpp(67) : {225} normal block at 0x0035B330, 4 bytes long.
Data: < > 00 00 00 00
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\winfrm2.cpp(59) : {224} client block at 0x0035B230, subtype c0, 192 bytes long.
a CDockBar object at $0035B230, 192 bytes long
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\array_p.cpp(67) : {223} normal block at 0x0035B1F0, 4 bytes long.
Data: < > 00 00 00 00
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\winfrm2.cpp(59) : {222} client block at 0x0035B0F0, subtype c0, 192 bytes long.
a CDockBar object at $0035B0F0, 192 bytes long
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\array_p.cpp(67) : {221} normal block at 0x0035B0B0, 4 bytes long.
Data: < > 00 00 00 00
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\winfrm2.cpp(59) : {220} client block at 0x0035AFB0, subtype c0, 192 bytes long.
a CDockBar object at $0035AFB0, 192 bytes long
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\winfrm2.cpp(59) : {218} client block at 0x0035AEB0, subtype c0, 192 bytes long.
a CDockBar object at $0035AEB0, 192 bytes long
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\bardock.cpp(736) : {217} normal block at 0x0035AC70, 176 bytes long.
Data: < .x > 18 95 2E 78 CD CD CD CD CD CD CD CD CD CD CD CD
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {215} normal block at 0x0035AE58, 26 bytes long.
Data: < 9Px > AC 39 50 78 04 00 00 00 04 00 00 00 01 00 00 00
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {214} normal block at 0x0035AE00, 24 bytes long.
Data: < 9Px > AC 39 50 78 03 00 00 00 03 00 00 00 01 00 00 00
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {213} normal block at 0x0035ADA8, 24 bytes long.
Data: < 9Px > AC 39 50 78 03 00 00 00 03 00 00 00 01 00 00 00
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\barcore.cpp(156) : {209} normal block at 0x0035AB48, 80 bytes long.
Data: < @ > 00 00 00 00 40 01 00 00 00 01 00 08 00 00 00 00
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {206} normal block at 0x0035AA90, 124 bytes long.
Data: < 5 d 5 > 00 00 00 00 A0 AA 35 00 00 00 00 00 64 A6 35 00
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {205} normal block at 0x0035A9D8, 124 bytes long.
Data: < ( 5 > 00 00 00 00 00 00 00 00 00 00 00 00 28 A9 35 00
.\LightModulator2DView.cpp(22) : {204} client block at 0x0035A928, subtype c0, 112 bytes long.
a CLightModulator2DView object at $0035A928, 112 bytes long
f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {200} normal block at 0x0035DFB8, 50 bytes long.
Data: < 9Px > AC 39 50 78 10 00 00 00 10 00 00 00 01 00 00 00
.\MainFrm.cpp(16) : {197} client block at 0x0035A4F8, subtype c0, 548 bytes long.
a CMainFrame object at $0035A4F8, 548 bytes long
.\LightModulator2DDoc.cpp(16) : {196} client block at 0x0035DD78, subtype c0, 84 bytes long.
a CLightModulator2DDoc object at $0035DD78, 84 bytes long
Object dump complete.Deren Ursprung ist mir noch unklar.
Matthias
-
Ganz klar - da fehlen offenbar noch weitere delete's (such dir mal einen Leak-Detektor, um deren Herkunft weiter einzuschränken).
-
was du mit new deklarierst musst du mit delete löschen
wenn du speicher mit malloc beanspruchst musst du es mit free() frei gebenwozu brauch man da ein tool xD
-
Wie beendest Du denn Dein Programm? Etwa mit PostQuitMessage?
Dann hast Du die Ursache gefunden.
Diese Methode kill ein Programm und lässt Leaks ohne Ende zurück. Korrekt ist es die erzeugten Fenster zu zerstören. Den Rest machen die entsprechenden Destruktoren.