Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.