Udostępnij za pośrednictwem


_CrtMemDifference

Porównuje dwa stany pamięci i zwraca ich różnice (tylko wersja debugowania).

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

Parametry

  • stateDiff
    Wskaźnik na _CrtMemState strukturę, która jest używana do przechowywania różnic pomiędzy stanami dwóch pamięci (zwrócone).

  • oldState
    Wskaźnik na wcześniejszy stan pamięci (_CrtMemState struktury).

  • newState
    Wskaźnik do późniejszego stanu pamięci (_CrtMemState struktury).

Wartość zwracana

Jeśli stany pamięci są znacząco różne, _CrtMemDifference zwraca wartość TRUE.W przeciwnym razie funkcja zwraca wartość FALSE.

Uwagi

_CrtMemDifference funkcja porównuje oldState i newState i przechowuje te różnice w stateDiff, który może następnie być używany przez aplikację do wykrywania przecieków pamięci i innych problemów z pamięcią.Gdy _DEBUG nie jest zdefiniowany, wywołania _CrtMemDifference są usuwane podczas przetwarzania wstępnego.

newState i oldState, każda z nich musi być ważnym wskaźnik do struktury _CrtMemState, zdefiniowanej w Crtdbg.h, która została wypełniona przez _CrtMemCheckpoint przed wywołaniem funkcji _CrtMemDifference.stateDiff musi być wskaźnikiem do poprzednio przydzielonego wystąpienie _CrtMemState struktury.Jeśli stateDiff, newState lub oldState ma wartość NULL, zostanie wywołana procedura obsługi nieprawidłowego parametru, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, errno, _doserrno, _sys_errlist, and _sys_nerr jest ustawione jako EINVAL, a funkcja zwraca FAŁSZ.

_CrtMemDifference porównuje wartości pola _CrtMemState bloków w oldState do tych w newState i zapisuje wynik w stateDiff.Liczba przydzielonych typów bloków lub całkowita liczba bloków przydzielonego dla każdego typu różni się pomiędzy stanami dwóch pamięci, stany są określone jako znacząco różne.Różnica między największą kwotę kiedykolwiek przydzieloną na raz dla dwóch stanów i różnica między całkowitą alokacji dla dwóch stanów jest również przechowywana w stateDiff.

Domyślnie wewnętrzne bloki wykonywania C (_CRT_BLOCK) nie są objęte operacjami stanu pamięci._CrtSetDbgFlag funkcja może służyć do włączenia _CRTDBG_CHECK_CRT_DF trochę _crtDbgFlag ,aby objąć te bloki wykrywania przecieków i innych operacji stanu pamięci.Uwolnione bloki pamięci (_FREE_BLOCK) nie powodują, że _CrtMemDifference zwraca wartość TRUE.

Aby uzyskać więcej informacji o funkcjach stanu sterty i strukturze _CrtMemState, zobacz Funkcje raportowania stanu sterty.Aby uzyskać informacje na temat sposobu, w jaki bloki pamięci są przydzielane, inicjowane i zarządzane w wersji debugowania podstawowej sterty, zobacz Szczegóły dotyczące stosu debugowania CRT.

Wymagania

Procedura

Wymagany nagłówek

Opcjonalny nagłówek

_CrtMemDifference

<crtdbg.h>

<errno.h>

Aby uzyskać więcej informacji na temat zgodności, zobacz Zgodność we Wstępie.

Biblioteki: Tylko wersja debugowania Biblioteka CRT — Funkcje.

Przykład

Zobacz crt_dbg1.

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołań platformy.

Zobacz też

Informacje

Procedury debugowania

_crtDbgFlag