Freigeben über


_CrtMemDifference

Vergleicht zwei Speicherzustände und gibt die vorhandenen Unterschiede zurück (nur Debugversion).

Syntax

int _CrtMemDifference(
   _CrtMemState *stateDiff,
   const _CrtMemState *oldState,
   const _CrtMemState *newState
);

Parameter

stateDiff
Zeiger auf eine _CrtMemState -Struktur, die zum Speichern der Unterschiede zwischen den beiden (zurückgegebenen) Speicherzuständen verwendet wird.

oldState
Zeiger auf einen früheren Speicherzustand (_CrtMemState -Struktur).

newState
Zeiger auf einen späteren Speicherzustand (_CrtMemState -Struktur).

Rückgabewert

Wenn der Unterschied in den Speicherzuständen signifikant ist, _CrtMemDifference wird zurückgegeben TRUE. Andernfalls wird von der Funktion FALSE zurückgegeben.

Hinweise

Die _CrtMemDifference Funktion vergleicht oldState und newState speichert ihre Unterschiede in stateDiff, die dann von der App verwendet werden können, um Speicherverluste und andere Speicherprobleme zu erkennen. Wenn _DEBUG nicht definiert ist, werden Aufrufe von _CrtMemDifference während der Vorverarbeitung entfernt.

newState und oldState muss jeweils ein gültiger Zeiger auf eine _CrtMemState Struktur sein, die in crtdbg.h, die _CrtMemCheckpoint vor dem Aufruf _CrtMemDifferenceausgefüllt wurde. stateDiff muss ein Zeiger auf eine zuvor zugeordnete Instanz der _CrtMemState -Struktur sein. newStateWenn stateDiff, oder oldState ist NULL, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die Ausführung fortgesetzt werden darf, errnowird _doserrno_sys_errlistsie festgelegt EINVAL und _sys_nerr die Funktion wird zurückgegebenFALSE.

_CrtMemDifference Vergleicht die _CrtMemState Feldwerte der Blöcke mit oldState den Blöcken in newState und speichert das Ergebnis in stateDiff. Wenn sich die Anzahl der zugewiesenen Blocktypen oder die Gesamtanzahl der zugewiesenen Blöcke für jeden Typ zwischen den beiden Speicherzuständen unterscheidet, wird der Unterschied in den Zuständen als signifikant betrachtet. Der Unterschied zwischen der größten Menge, die jemals für beide Zustände gleichzeitig zugeordnet wurde, und der Unterschied zwischen den gesamten Speicherbelegungen für die beiden Zustände werden auch in stateDiffgespeichert.

Standardmäßig sind interne C-Laufzeitblöcke (_CRT_BLOCK) nicht in Speicherzustandsvorgängen enthalten. Die _CrtSetDbgFlag Funktion kann zum Aktivieren des _CRTDBG_CHECK_CRT_DF Bits _crtDbgFlag verwendet werden, um diese Blöcke in die Leckerkennung und andere Speicherzustandsvorgänge einzuschließen. Freizugebende Speicherblöcke (_FREE_BLOCK) führen _CrtMemDifference nicht dazu, dass sie zurückgegeben TRUEwerden.

Weitere Informationen über Heapzustandsfunktionen und die _CrtMemState-Struktur finden Sie unter Heap State Reporting Functions. Informationen dazu, wie Speicherblöcke in der Debugversion des Basis heap zugeordnet, initialisiert und verwaltet werden, finden Sie unter CRT Debug Heap Details.

Anforderungen

Routine Erforderlicher Header Optionaler Header
_CrtMemDifference <crtdbg.h> <errno.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Bibliotheken: Nur Debugversionen der C-Laufzeitbibliotheken.

Weitere Informationen

Debugroutinen
_crtDbgFlag