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 określony blok pamięci znajduje się w stercie lokalnym i czy ma prawidłowy identyfikator typu bloku stert debugowania (tylko wersja debugowania).
Składnia
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *lineNumber
);
Parametry
userData
Wskaźnik do początku bloku pamięci w celu zweryfikowania.
size
Rozmiar określonego bloku (w bajtach).
requestNumber
Wskaźnik do numeru alokacji bloku lub NULL.
filename
Wskaźnik do nazwy pliku źródłowego, który zażądał bloku lub NULL.
lineNumber
Wskaźnik do numeru wiersza w pliku źródłowym lub NULL.
Wartość zwracana
_CrtIsMemoryBlock Zwraca TRUE wartość , jeśli określony blok pamięci znajduje się w stercie lokalnym i ma prawidłowy identyfikator typu bloku stert debugowania; w przeciwnym razie funkcja zwraca FALSEwartość .
Uwagi
Funkcja _CrtIsMemoryBlock sprawdza, czy określony blok pamięci znajduje się w lokalnej stercie aplikacji i czy ma prawidłowy identyfikator typu bloku. Ta funkcja może również służyć do uzyskania numeru zamówienia alokacji obiektu oraz numeru pliku źródłowego/numeru wiersza, w którym pierwotnie zażądano alokacji bloku pamięci. Wartość inna niżNULL przekazana w stosie requestNumber, filenamelub lineNumber powoduje _CrtIsMemoryBlock ustawienie parametru na wartość w nagłówku debugowania bloku pamięci, jeśli znajdzie blok w stercie lokalnym. Gdy _DEBUG nie jest zdefiniowana, wywołania do _CrtIsMemoryBlock są usuwane podczas przetwarzania wstępnego.
W przypadku niepowodzenia zwraca FALSEwartość , a parametry wyjściowe są inicjowane do wartości domyślnych: requestNumber i lineNumber są ustawione na wartość 0 i filename ustawiono wartość NULL._CrtIsMemoryBlock
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 określony adres nie znajduje się w stercie lokalnym:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
Aby uzyskać więcej informacji na temat _CrtIsMemoryBlock 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 |
|---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
Aby uzyskać więcej informacji 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.