_CrtIsValidPointer
Sprawdza, czy wskaźnik nie ma wartości null. W wersjach biblioteki czasu wykonywania języka C przed programem Visual Studio 2010 sprawdza, czy określony zakres pamięci jest prawidłowy do odczytu i zapisu (tylko wersja debugowania).
Składnia
int _CrtIsValidPointer(
const void *address,
unsigned int size,
int access
);
Parametry
address
Wskazuje początek zakresu pamięci, aby przetestować poprawność.
size
Rozmiar określonego zakresu pamięci (w bajtach).
access
Ułatwienia dostępu do odczytu/zapisu w celu określenia zakresu pamięci.
Wartość zwracana
_CrtIsValidPointer
Zwraca wartość TRUE
, jeśli określony wskaźnik nie ma wartości null. W wersjach biblioteki CRT przed programem Visual Studio 2010 zwraca TRUE
wartość, jeśli zakres pamięci jest prawidłowy dla określonej operacji lub operacji. W przeciwnym razie funkcja zwraca FALSE
wartość .
Uwagi
W bibliotece CRT w programie Visual Studio 2010 i nowszych wersjach size
parametry i access
są ignorowane i _CrtIsValidPointer
sprawdza tylko, czy określona wartość address
nie ma wartości null. Ponieważ ten test jest łatwy do wykonania samodzielnie, nie zalecamy używania tej funkcji. W wersjach przed programem Visual Studio 2010 funkcja sprawdza, czy zakres pamięci rozpoczynający się od address
i rozszerzania dla size
bajtów jest prawidłowy dla określonej operacji lub operacji ułatwień dostępu. Gdy access
jest ustawiona wartość TRUE
, zakres pamięci jest weryfikowany zarówno pod kątem odczytu, jak i zapisu. Gdy access
wartość to FALSE
, zakres pamięci jest weryfikowany tylko pod kątem odczytu. Gdy _DEBUG
nie jest zdefiniowana, wywołania do _CrtIsValidPointer
są usuwane podczas przetwarzania wstępnego.
Ponieważ ta funkcja zwraca TRUE
wartość lub FALSE
, można ją przekazać do jednego z _ASSERT
makr w celu utworzenia podstawowego mechanizmu obsługi błędów debugowania. Poniższy przykład powoduje niepowodzenie asercji, jeśli zakres pamięci nie jest prawidłowy zarówno w przypadku operacji odczytu, jak i zapisu:
_ASSERTE( _CrtIsValidPointer( address, size, TRUE ) );
Aby uzyskać więcej informacji na temat _CrtIsValidPointer
sposobu użycia z innymi funkcjami debugowania i makrami, zobacz Makra do raportowania. Aby uzyskać informacje na temat przydzielania, inicjowania i zarządzania blokami pamięci w wersji debugowania sterty podstawowej, zobacz szczegóły sterty debugowania CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_CrtIsValidPointer |
<crtdbg.h> |
_CrtIsValidPointer
to rozszerzenie firmy Microsoft. Aby uzyskać informacje o zgodności, zobacz Zgodność.
Biblioteki
Debugowanie tylko wersji bibliotek czasu wykonywania języka C.
Przykład
Zapoznaj się z przykładem _CrtIsValidHeapPointer
artykułu.