Memory Leak Detection



  • Hallo,
    ich benutze Visual Studio 2005 und aus irgendeinem Grund bekomme ich keine
    Informationen mehr über evtl. vorhandene Memory Leaks im Outputfenster
    angezeigt.
    Ich kenne das von der Arbeit, wo wir mit Visual Studio 6.0 arbeiten,
    dann steht im Debugfenster manchmal "Detected Memory Leaks" oder sowas,
    wenn man vergessen hat, Speicher mit delete wieder freizugeben.
    Früher ging es bei mir, aber seit kurzem krieg ich im Debug keine Informationen mehr darüber angezeigt, obwohl ich noch offensichtlich Memory Leaks drin habe.
    VLD kenne ich, ich würde aber gerne die eingebaute Funktion nutzen.
    Kann man das irgendwo einschalten?

    MfG
    Norman



  • Ich kenne nur #define new DEBUG_NEW (an den Anfang des Programms setzen und new überwacht alle Speicher-Anforderungen und -Freigaben).


  • Mod

    DEBUG_NEW ist nur nötig wenn man noch explizite Infos über die Position haben möchte. Die Leaks werden denoch getrackt.

    AfxEnableMemoryTracking falsch eingesetzt? Oder Tracking mit _CrtSetDbgFlag ausgeschaltet?



  • define new DEBUG_NEW
    

    und

    AfxEnableMemoryTracking()
    

    sind nur für die MFC
    gültig. Da ich es hier allerdings mit nem Konsolenprogramm zu tun hab, klappt
    es nur mit _CrtSetDbgFlag, jedoch zeigt er mir nicht den Quelltext an,
    an dem die Allokierung aufgetreten ist, sondern nur eine Adresse des
    Speicherbereichs. Das hilft mir leider nicht, weil ich so nicht zurück
    verfolgen kann, wo das Problem aufgetreten ist..
    Ich versteh das nicht, ist dieses Feature nicht standardmäßig eingeschaltet?
    Ich hab keine Quellcodezeile, die das in irgendeiner Weise ausschalten würde..

    Norman.


  • Mod

    Du bist doch im MFC Forum? Wieso wunderst Du Dich, dass ich Dich darauf hinweise! Dieses Feature ist im MFC Framework eingeschaltet.

    In einem Standard Projekt ist es nicht eingeschaltet!
    Ansonsten kannst Du auch _CrtDumpMemoryLeaks verwenden.

    Grundsätzlich kann nur mit der MFC und DEBUG_NEW dieses Feature erreicht werden, dass auch die Adressen (Positionen) der Allokation angezeigt werden. Oder Du verwendest Leak Tools wie das von Jochen Kalmbach.

    Die Nummer der Allokation wird auch angezeigt. Wenn die konstant ist kannst Du _CrtSetBreakAlloc verwenden.


Anmelden zum Antworten