Freigeben über


_CrtMemDifference

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

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

Parameter

  • stateDiff
    _CrtMemState Zeiger auf eine Struktur, die verwendet wird, um die Unterschiede zwischen den beiden Speicherzuständen zu speichern () zurückgegeben.

  • oldState
    Zeiger zu einem früheren**_CrtMemState** Speicherzustand (Struktur).

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

Rückgabewert

Wenn die Speicherzustände erheblich unterscheiden, gibt _CrtMemDifference TRUE zurück.Andernfalls gibt die Funktion FALSE zurück.

Hinweise

Die _CrtMemDifference-Funktion vergleicht oldState und newState und speichert ihre Unterschiede in stateDiff, die von der Anwendung verwendet werden kann, Speicherverluste und andere Probleme Arbeitsspeicher zu erkennen.Wenn _DEBUG nicht definiert wird, werden Aufrufe _CrtMemDifference während des Präprozessorlaufs entfernt.

newState und oldState müssen jedes ein gültiger Zeiger auf eine Struktur _CrtMemState in Crtdbg.h definiert sein, das von _CrtMemCheckpoint gefüllt wurde, bevor _CrtMemDifferenceaufgerufen hat.stateDiff muss ein Zeiger auf eine zuvor zugeordneten Instanz der _CrtMemState Struktur sein.Wenn stateDiff, newStateoder oldStateNULLungültige Parameter ist, wird der Ereignishandler aufgerufen, wie in Parametervalidierungbeschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, wird errno, _doserrno, _sys_errlist und _sys_nerr zu EINVAL festgelegt, und die Funktion gibt FALSE zurück.

_CrtMemDifference vergleicht die _CrtMemState Feldwerte der Blöcke oldState auf die in newState und speichert das Ergebnis in stateDiff.Wenn die Anzahl der reservierten Blocks Typen oder Gesamtzahl der zugeordneten Blöcken für jeden Typ zwischen den beiden Speicherzuständen unterscheidet, müssen die Bedingungen beträchtlich unterscheiden.Der Unterschied zwischen der größten Menge, die sofort für die zwei Zustände zugeordnet ist, und der Unterschied zwischen Gesamtausstattung für die zwei Zustände werden auch in stateDiffgespeichert.

Standardmäßig werden interne C-Laufzeit-Blöcke (_CRT_BLOCK) - Vorgänge Speicherzustands in den nicht eingeschlossen.Die _CrtSetDbgFlag-Funktion kann verwendet werden, um das _CRTDBG_CHECK_CRT_DF Bit von _crtDbgFlag zu aktivieren, um diese Blöcke in der Speicherverlusterkennung und andere Vorgänge Speicherzustands einzuschließen.Freigegebene**_FREE_BLOCK**(Speicherblöcke nicht bewirken, _CrtMemDifference ) TRUE zurückzugeben.

Weitere Informationen über Funktionen zur zustands Heap und die _CrtMemState Struktur finden Sie unter Berichtsfunktionen für den Heapzustand.Weitere Informationen zum Speicherblöcke in der Debugversion des Basisheaps zugeordnet, initialisiert und verwaltet werden, finden Sie unter Speicherverwaltung und Debugheap.

Anforderungen

Routine

Erforderlicher Header

Optionaler Header

_CrtMemDifference

<crtdbg.h>

<errno.h>

Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.

Bibliotheken: Debugversionen von nur CRT-Bibliotheks-Funktionen .

Beispiel

Weitere Informationen finden Sie unter crt_dbg1.

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Debug- Routinen

_crtDbgFlag