Udostępnij za pośrednictwem


_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 FALSEwartość .

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.

Zobacz też

Procedury debugowania