Was tun gegen _nicht_ selbstverschuldete Memory Leaks?



  • Morgen zusammen,
    ich habe in einem Projekt auf dem VS.net 2003 das Problem, dass IMMER 44 bytes leaken und der Debugger mir nicht sagen kann wo. Ich vermute, dass die MFC oder die C-Libs irgendwo den Mist verursachen 👎 . Es stellt kein Problem in dem eigentlichen Sinne da, weil es ja nur 44 bytes pro Programminstanz sind aber es sieht unschön aus. Kann ich da irgendwas gegen machen? Wenn ja: Was?

    {160} normal block at 0x0032AB48, 44 bytes long.
     Data: <,               > 2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF
    

    Thx,

    MaSTaH



  • Hallo,
    mit memory leaks hatte ich auch grad zu schaffen. Bist Du Dir 100% sicher, dass Du nicht irgendwo zu viel Speicher allokierst bzw. ihn nicht wieder freigibst? Schau auch mal auf: http://www.codeproject.com/tools/leakfinder.asp

    Ich kann mir eigentlich nicht vorstellen dass das an MFC oder so liegen soll.



  • Hi,

    imho tritt dieses problem nur auf bei globalen objekten, die memorygetrackt und erst nach verlassen der WinMain zerstört werden.

    Ist störend aber unkritisch.



  • Cosmixx schrieb:

    Bist Du Dir 100% sicher, dass Du nicht irgendwo zu viel Speicher allokierst bzw. ihn nicht wieder freigibst?

    100%ig. Das Projekt umfasst zwar bis jetzt schon ~40 Klassen aber nirgendwo wird Speicher angefordert der nicht auch freigegeben wird. Vieles ist mit auto_ptr realisiert.

    Cosmixx schrieb:

    Ich kann mir eigentlich nicht vorstellen dass das an MFC oder so liegen soll.

    So großes Vertrauen?



  • Wonko schrieb:

    Ist störend aber unkritisch.

    Nein, kritisch ist es nicht. Sieht nur halt nach absolutem n00b-Code aus wenn man Memoryleaks hat. Habe schon öfters gehört, dass es in den MFC zu Leaks gekommen ist...



  • Hast Du mal versucht ob Dir das Makro

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif

    in jeder Deiner cpp was bringt ? (Ausgabe wo genau der Leak auftritt)



  • Habe Leakfinder mal ausprobiert und rausbekommen, dass der Speicher nicht in meinem Code angefordert wird. Knifflige Sache. Denke mal ich benutze eine Funktion aus der WinAPI oder den MFC die mir Speicher anfordert und von mir verlangt zu löschen. Naja, kann sich nur noch um Stunden handeln 😃 . Danke erstmal euch allen 🙂 .



  • Aaargs, gefunden. GetProfileBinary war der Übeltäter. Habe delete anstatt delete[] gemacht. Peinlich peinlich 🙄 . Was aber noch viel peinlicher ist: Leakfinder-Source "stackwalker.cpp" produziert selber eine Reihe Memory-Leaks 😃 😃 😃 .


Anmelden zum Antworten