_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 FALSE
wartość .
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
, filename
lub 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 FALSE
wartość , 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.