_CrtIsMemoryBlock
Sprawdza, czy blok pamięci określony jest w lokalna sterta i że ma identyfikator typu bloku sterty prawidłowe debugowania (tylko wersja debugowania).
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *linenumber
);
Parametry
[in] userData
Wskaźnik na początku bloku pamięci do sprawdzenia.[in] size
Rozmiar określonego bloku (w bajtach).[poza] requestNumber
Wskaźnik liczby alokacji bloku lub NULL.[poza] filename
Wskaźnik myszy na nazwę pliku źródłowego, który zażądał bloku lub NULL.[poza] linenumber
Wskaźnik, aby numer wiersza w pliku źródłowym lub NULL.
Wartość zwracana
_CrtIsMemoryBlockZwraca TRUE Jeśli blok pamięci określony znajduje się w stercie lokalnych i ma identyfikator typu bloku sterty debugowania prawidłowy; w przeciwnym razie funkcja zwraca FALSE.
Uwagi
_CrtIsMemoryBlock Funkcja weryfikuje, że blok pamięci określony jest umieszczony w lokalnej pamięci i czy jest identyfikatorem typu prawidłowe bloku.Tej funkcji można również uzyskać numer obiektu alokacji zlecenia i numer wiersz/nazwy pliku źródłowego, gdzie alokacji blok pamięci był pierwotnie żądany.Przekazanie wartości inne niż NULL requestNumber, filename, lub linenumber przyczyn parametry _CrtIsMemoryBlock zestaw tych parametrów do wartości w nagłówku debugowania blok pamięci, jeśli znajdzie bloku w lokalna sterta.Gdy _DEBUG nie jest zdefiniowana, wzywa do _CrtIsMemoryBlock są usuwane podczas przetwarzania wstępnego.
Jeśli _CrtIsMemoryBlock się nie powiedzie, zwraca FALSE i wartości domyślne są inicjowane parametry wyjściowe: requestNumber i lineNumber są ustawione na 0 i filename jest ustawiona na NULL.
Ponieważ ta funkcja zwraca TRUE lub FALSE, mogą być przekazywane do jednego z _ASSERT makra, aby utworzyć prosty błąd debugowania mechanizmu obsługi.Poniższy przykład powoduje błąd potwierdzenia, jeśli podany adres nie jest umieszczony w lokalnym stosu:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
Aby uzyskać więcej informacji o tym, jak _CrtIsMemoryBlock może być używany z innymi funkcjami debugowania i makr, zobacz Makra raportowania.Aby uzyskać informacje na temat sposobu, w jaki bloki pamięci są przydzielane, inicjowane i zarządzane w wersji debugowania podstawowej sterty, zobacz Szczegóły dotyczące stosu debugowania CRT.
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
Aby uzyskać więcej informacji na temat zgodności, zobacz Zgodność we Wstępie.
Biblioteki
Debuguj wersje wyłącznie Bibliotek uruchomieniowych C.
Przykład
Zobacz przykład dla _CrtIsValidHeapPointer tematu.
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywoływania platformy.