CMemoryState

CMemoryState verfügt nicht über eine Basisklasse.

CMemoryState bietet eine bequeme Möglichkeit zur Erkennung von Speicherlecks in Ihrem Programm. Ein "Speicherleck" tritt auf, wenn Speicher für ein Objekt auf dem Heap reserviert, aber nicht freigegeben, wenn es nicht mehr erforderlich ist. Solche Speicherverluste können schließlich zu Out-of-Memory-Fehlern führen. Es gibt mehrere Möglichkeiten zu reservieren und Freigeben von Speicher in Ihrem Programm:

Die CMemoryState -Diagnose helfen nur erkennen Speicherverluste verursacht, wenn Arbeitsspeicher mithilfe des Operators new nicht verwenden, Löschen Sieaufgehoben wird. Die anderen beiden Gruppen von Speicher-Management-Funktionen sind für nicht-c++-Programme, und mischen sie mit neuen und im selben Programm Löschen wird nicht empfohlen. Eine zusätzliche Makro DEBUG_NEW, wird bereitgestellt, um den new -Operator ersetzen, wenn Sie Datei und Zeilennummer Verfolgung von Speicherzuordnungen benötigen. DEBUG_NEW wird verwendet, wenn Sie normalerweise den new -Operator verwenden.

Wie bei anderen Diagnosen stehen die CMemoryState -Diagnose nur in Debugversionen des Programms. Eine Debug-Version muss die _DEBUG -Konstante definiert haben.

Wenn Sie, dass Ihr Programm hat einen Speicherverlust vermuten, können Checkpoint, Differenzund DumpStatistics Funktionen Sie den Unterschied zwischen den Speicherzustand (reservierten Objekte) entdecken an zwei verschiedenen Punkten in der Ausführung des Programms. Diese Informationen kann bei der Bestimmung, ob eine Funktion bis alle Objekte, die es zuweist, Reinigung ist nützlich sein.

Wenn einfach zu wissen, wo das Ungleichgewicht in der Seitenzuordnung und die Zuordnungsaufhebung auftritt nicht genügend Informationen bereitstellt, können die DumpAllObjectsSince -Funktion Sie alle seit der vorherigen Aufruf Checkpointreservierten Objekte dump. Dieser Dump zeigt die Reihenfolge der Zuweisung, die Quelldatei und Zeile, wo das Objekt reserviert wurde (wenn Sie DEBUG_NEW für Zuweisung verwenden) und die Ableitung des Objekts, seine Adresse und seine Größe. DumpAllObjectsSince fordert außerdem Angaben zu seinem aktuellen Zustand jedes Objekt Dump -Funktion.

Weitere Informationen dazu, wie mithilfe von CMemoryState und andere Diagnose finden Sie unter MFC-Debugging-Unterstützung in Visual C++ Programmer's Guide.

Hinweis&Nbsp;  Deklarationen von Objekten vom Typ CMemoryState und Aufrufen von Memberfunktionen eingeschlossen werden sollten, durch #if defined(_DEBUG)/#endif Richtlinien. Dies führt dazu, dass die Speicherdiagnose nur in Debuggen Builds des Programms einbezogen werden.

Klasse&nmember |nbsp; Hierarchiediagramm

Index