Udostępnij za pośrednictwem


_CrtMemDifference

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

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

Parametry

  • stateDiff
    Wskaźnik, aby _CrtMemState strukturę, która jest używana do przechowywania różnice między Państwami dwóch pamięci (zwrócone).

  • oldState
    Wskaźnik do wcześniejszego stanu pamięci (_CrtMemState struktury).

  • newState
    Wskaźnik, aby później stan pamięci (_CrtMemState struktury).

Wartość zwracana

Jeśli pamięć znacznie różnią się _CrtMemDifference zwraca wartość TRUE.W przeciwnym wypadku funkcja zwraca wartość FALSE.

Uwagi

_CrtMemDifference Działać porównuje oldState i newState i zapisuje ich różnic w stateDiff, który następnie można przez aplikację do wykrywania przecieków pamięci i inne problemy z pamięcią.Gdy _DEBUG nie jest zdefiniowana, wzywa do _CrtMemDifference są usuwane w czasie wstępnego przetwarzania.

newStatei oldState każdy musi być prawidłowy wskaźnik do _CrtMemState struktury zdefiniowane w Crtdbg.h, które zostały wypełnione przez _CrtMemCheckpoint przed wywoływaniem _CrtMemDifference.stateDiffmusi być wskaźnik do wcześniej przydzielonego wystąpienia _CrtMemState struktury.Jeśli stateDiff, newState, lub oldState jest NULL, wywoływana jest funkcja obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie jest dozwolone, aby kontynuować, errno, _doserrno, _sys_errlist i _sys_nerr jest ustawiona na EINVAL i funkcja zwraca wartość FALSE.

_CrtMemDifferenceporównuje _CrtMemState pole wartości bloki w oldState do tych w newState i zapisuje wynik w stateDiff.Liczba przydzielonych typów bloku lub całkowita liczba bloków przydzielonego dla każdego typu różni się pomiędzy Państwami dwóch pamięci, Państwa są określane jako się znacznie różnić.Różnica między największą ilość kiedykolwiek przydzielone na raz dla dwóch państw oraz różnica między całkowitą alokacji dla dwóch Państw są również przechowywane w stateDiff.

Domyślnie, wewnętrzne bloki run-time C (_CRT_BLOCK) nie znajdują się w pamięci stan operacji._CrtSetDbgFlag Funkcji można włączyć _CRTDBG_CHECK_CRT_DF bit z _crtDbgFlag do uwzględnienia tych bloków w wykrywania przecieków i innych operacji stan pamięci.Zwolniona bloków pamięci (_FREE_BLOCK) nie mogą powodować _CrtMemDifference zwróci TRUE.

Aby uzyskać więcej informacji o funkcjach Państwo sterty i _CrtMemState struktury, zobacz Funkcje raportowania stanu sterty.Informacje o jak bloków pamięci są przydzielane, zainicjowany i zarządzane w wersji debugowej bazowy sterty, zobacz Zarządzanie pamięcią i sterty debugowania.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

Opcjonalne nagłówka

_CrtMemDifference

<crtdbg.h>

<errno.h>

Informacji dotyczących zgodności, zobacz Zgodność we wprowadzeniu.

Biblioteki: debugowania wersje Funkcje biblioteki CRT tylko.

Przykład

See crt_dbg1.

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Platforma wywołać przykłady.

Zobacz też

Informacje

Debugowania procedur

_crtDbgFlag