_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 _CrtMemDifference
ausgefüllt wurde. stateDiff
muss ein Zeiger auf eine zuvor zugeordnete Instanz der _CrtMemState
-Struktur sein. newState
Wenn 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, errno
wird _doserrno
_sys_errlist
sie 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 stateDiff
gespeichert.
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 TRUE
werden.
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.