_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.