was frißt den Speicher auf?



  • Hi,

    ich bin hier neu und bin dabei C++ und die MFC zu erlernen.

    In einer Übung habe ich folgende gemacht:
    - über den Assistenten der MFC ein dialogfeldbasierendes Programm
    - es gibt nur den Speicherzustand aus.
    - der Code im Konstruktor der Dialogklasse sieht wie folgt aus:
    MEMORYSTATUS ms;
    ms.dwLength = sizeof(ms);
    GlobalMemoryStatus(&ms);

    char str[100];
    sprintf(str, "%ld", ms.dwTotalPhys/1024);
    m_text5=str;

    sprintf(str, "%ld", ms.dwAvailPhys/1024);
    m_text6=str;
    ...

    Und nun kommts!!!
    nach jedem Beenden und Neuaufruf des Programms ist der verfügbare Speicher ca. 500 KB kleiner (ms.dwAvailPhys)
    Das kanns doch nichs sein?

    Habe ich oder die MFC vergessen, irgend etwas wieder freizugeben?
    Hat schon jemand die gleiche Erfahrung gemacht?



  • Hmm ... Ich kann an deinem Code eigentlich keinen Fehler entdecken ... Ich probiers mal shcnell bei mir aus.



  • Bei mir gibt es nur die normalen Schwankungen ... Ich habe den Code auf nen Button gelegt und da schwankt es halt mal 100 - 200 KB nach oben oder nach unten, als gnaz normal. Vielleicht hast du sonst noch irgendwas? ZB, Nen Zeiger mit new allokiert und nciht wieder freigegeben?



  • Hi,

    ich habe in allen Dateien nach "new" gesucht und außer 2x "#define new DEBUG_NEW" nichts gefunden.

    Ich habe das Programm nochmals mehrmals gestartet, und es geht stetig nach unten.
    5292 KB
    5236
    5196
    ...
    3748
    ...
    1036
    ...
    Erst bei 0 pendelt sich der Wert bei 128 KB pendelt sich der Wert ungefähr ein...

    Ich versteh's nicht!


Anmelden zum Antworten