Speicherfreigabe überprüfen



  • Hi,

    ich habe hier eine recht große Applikation (in einem mehrköpfigen Projekt) und habe leider festgestellt, dass nicht aller Speicher wieder freigegeben wird. Während des Arbeitens mit dem Programm bauscht sicher der benutzte Arbeitsspeicher (laut Windows-Taskmanager) immer mehr auf.

    Nun die Frage: Gibt es eine Möglichkeit, mit einem Tool oder selbst geschrieben, rauszubekommen, welche Klasse ihren SPeicher NICHT wieder freigibt??? Oder gar, welche Variable dafür verantwortlich ist? Oder wie macht man das am Besten? Es wäre etwas mühselig, jede Codezeile zu überprüfen (recht viel, von versch. Leuten, wie gesagt).

    Ratschläge wären wirklich super! Danke!!



  • Unter Microsoft VS gibt den "DebugHeap". Mit einigen Änderungen am Quellcode soll er Speicherleichen beim Beenden des Programmes ausgeben. Musst du mal MSDN oder mit google suchen. Zu erkennen ist die Verwendung an Änderungen gemäss nachfolgendem Muster.

    .h
    #include <stdlib.h>
    #include <crtdbg.h>
    #define DEBUG_NEW new(_NORMAL_BLOCK, THIS_FILE, __LINE__)
    
    .cpp
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    

    Wird bei MFC-Anwendungen glaub ich automatisch durch den Wizard eingefügt ?!?

    Ausserdem gibt es verschiedene kommerzielle Tools (nicht billig) die diese Aufgabe mehr oder weniger gut übernehmen. Die Bekanntesten unter ihnen dürften MuMega's Boundschecker und Purify sein. Du könntest auch mal mit GlowCode probieren. Ist zwar ein Profiler soll auch diese Möglichkeit besitzen.

    mfg JJ


Anmelden zum Antworten