Berichtsfunktionen für den Heapzustand

Aktualisiert: November 2007

Dieses Thema gilt für folgende Anwendungsbereiche:

Edition

Visual Basic

C#

C++

Web Developer

Express

Nur "Systemeigen"

Standard

Nur "Systemeigen"

Pro und Team

Nur "Systemeigen"

Tabellenlegende:

Vorhanden

Nicht vorhanden

Befehl oder Befehle, die standardmäßig ausgeblendet sind.

Eine Reihe Funktionen geben den Inhalt des Debugheaps zu einem bestimmten Zeitpunkt wieder.

"_CrtMemState"

Um zu einem bestimmten Zeitpunkt einen zusammenfassenden Snapshot des Heapzustands aufzuzeichnen, verwenden Sie die in CRTDBG.H definierte _CrtMemState-Struktur:

typedef struct _CrtMemState
{
    // Pointer to the most recently allocated block:
    struct _CrtMemBlockHeader * pBlockHeader;
    // A counter for each of the 5 types of block:
    size_t lCounts[_MAX_BLOCKS];
    // Total bytes allocated in each block type:
    size_t lSizes[_MAX_BLOCKS];
    // The most bytes allocated at a time up to now:
    size_t lHighWaterCount;
    // The total bytes allocated at present:
    size_t lTotalCount;
} _CrtMemState;

Diese Struktur speichert einen Zeiger auf den ersten (zuletzt reservierten) Block in der verknüpften Heapliste. Anschließend zeichnet sie in zwei Arrays auf, wie viele Speicherblöcke jedes Typs (_NORMAL_BLOCK, _CLIENT_BLOCK, _FREE_BLOCK usw.) sich in der Liste befinden und wie viele Bytes für jeden Blocktyp reserviert wurden. Schließlich zeichnet die Struktur auf, wie viele Bytes bisher maximal gleichzeitig im Heap reserviert waren und wie viele Bytes momentan reserviert sind.

Andere CRT‑Berichtsfunktionen

Die folgenden Funktionen geben den Heapzustand und -inhalt wieder. Diese Informationen werden verwendet, um Speicherverluste und andere Probleme zu erkennen.

Funktion

Beschreibung

_CrtMemCheckpoint

Speichert einen Heapsnapshot in einer von der Anwendung bereitgestellten _CrtMemState-Struktur.

_CrtMemDifference

Vergleicht zwei Speicherzustandsstrukturen, speichert die Unterschiede in einer dritten Zustandsstruktur und gibt TRUE zurück, falls unterschiedliche Zustände festgestellt wurden.

_CrtMemDumpStatistics

Gibt eine bestimmte _CrtMemState-Struktur aus. Die Struktur kann einen Zustandssnapshot des Debugheaps oder die Unterschiede zwischen zwei Snapshots enthalten.

_CrtMemDumpAllObjectsSince

Gibt Informationen zu allen Objekten aus, die seit einem bestimmten Heapsnapshot oder seit Beginn der Ausführung reserviert wurden. Bei jedem Dump eines _CLIENT_BLOCK-Blocks wird eine von der Anwendung bereitgestellte Hookfunktion aufgerufen, falls eine solche mit _CrtSetDumpClient installiert wurde.

_CrtDumpMemoryLeaks

Stellt fest, ob seit dem Programmstart Speicherverluste aufgetreten sind, und gibt ggf. alle reservierten Objekte aus. Bei jedem Dump eines _CLIENT_BLOCK-Blocks durch _CrtDumpMemoryLeaks wird eine von der Anwendung bereitgestellte Hookfunktion aufgerufen, falls eine solche mit _CrtSetDumpClient installiert wurde.

Siehe auch

Weitere Ressourcen

Der CRT-Debugheap