_CrtIsMemoryBlock
Проверяет, находится ли указанный блок памяти в локальной куче и имеет ли он действительный идентификатор типа блока отладочной кучи (только в отладочной версии).
Синтаксис
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *lineNumber
);
Параметры
userData
Указатель на начало блока памяти, требующего проверки.
size
Размер указанного блока в байтах.
requestNumber
Указатель на номер выделения блока или NULL
.
filename
Указатель на имя исходного файла, который запрашивает блок или NULL
.
lineNumber
Указатель на номер строки в исходном файле или NULL
.
Возвращаемое значение
_CrtIsMemoryBlock
возвращает TRUE
, если указанный блок памяти находится в локальной куче и имеет допустимый идентификатор типа блока отладочной кучи; в противном случае функция возвращает FALSE
.
Замечания
Функция _CrtIsMemoryBlock
проверяет, находится ли указанный блок памяти в локальной куче и имеет ли он допустимый идентификатор типа блока. Эту функцию можно также использовать для получения порядкового номера распределения объекта, а также имени или номера строки исходного файла, содержащего исходный запрос на выделение блока памяти. NULL
Значение, передаваемое в объекте requestNumber
, filename
или lineNumber
параметре_CrtIsMemoryBlock
, приводит к тому, что параметр имеет значение в заголовке отладки блока памяти, если он находит блок в локальной куче. Если _DEBUG
это не определено, вызовы _CrtIsMemoryBlock
удаляются во время предварительной обработки.
При _CrtIsMemoryBlock
сбое возвращается FALSE
, и выходные параметры инициализированы в значения по умолчанию: requestNumber
для lineNumber
него задано значение 0 и filename
задано значение NULL
0.
Так как эта функция возвращает TRUE
или FALSE
передается одному из _ASSERT
макросов, чтобы создать базовый механизм обработки ошибок отладки. В следующем примере происходит сбой утверждения, если указанный адрес не расположен в локальной куче:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
Дополнительные сведения о том, как _CrtIsMemoryBlock
можно использовать с другими функциями отладки и макросами, см. в разделе "Макросы" для создания отчетов. Сведения о выделении, инициализации и управлении блоками памяти в отладочной версии базовой кучи см. в сведениях об отладочной куче CRT.
Требования
Маршрут | Обязательный заголовок |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
См. пример статьи _CrtIsValidHeapPointer
.