Поделиться через


_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 задано значение NULL0.

Так как эта функция возвращает TRUE или FALSEпередается одному из _ASSERT макросов, чтобы создать базовый механизм обработки ошибок отладки. В следующем примере происходит сбой утверждения, если указанный адрес не расположен в локальной куче:

_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
          &filename, &linenumber ) );

Дополнительные сведения о том, как _CrtIsMemoryBlock можно использовать с другими функциями отладки и макросами, см. в разделе "Макросы" для создания отчетов. Сведения о выделении, инициализации и управлении блоками памяти в отладочной версии базовой кучи см. в сведениях об отладочной куче CRT.

Требования

Маршрут Обязательный заголовок
_CrtIsMemoryBlock <crtdbg.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Библиотеки

Только отладочные версии библиотек времени выполнения языка C.

Пример

См. пример статьи _CrtIsValidHeapPointer .

См. также

Отладка подпрограмм