Udostępnij za pośrednictwem


_CrtIsMemoryBlock

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.

Zobacz też

Procedury debugowania