_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 проверяет, находится ли указанный блок памяти в локальной куче приложения и имеет ли он допустимый идентификатор типа блоков. Эту функцию также можно использовать для получения порядкового номера выделения объекта и имени файла исходного кода/номера строки, в котором было первоначально запрошено выделение блоков памяти. Если для параметров requestNumber, filename или linenumber передаются отличные от NULL значения, _CrtIsMemoryBlock задает этим параметрам значения в заголовке отладки блока памяти, если этот блок находится в локальной куче. Если _DEBUG не определен, то вызовы _CrtIsMemoryBlock удаляются во время предварительной обработки.
Если _CrtIsMemoryBlock завершается ошибкой, возвращается FALSE и выходным параметрам присваиваются значения по умолчанию: 0 для requestNumber и lineNumber и NULL для filename.
Поскольку эта функция возвращает TRUE или FALSE, она может быть передана одному из макросов _ASSERT для создания простого отладочного механизма обработки ошибок. Следующий пример вызывает сбой проверочного утверждения, если адрес не находится в локальной куче:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
Дополнительные сведения о том, как можно использовать _CrtIsMemoryBlock с другими отладочными функциями и макросами, см. в разделе Макросы для создания отчетов. Сведения о том, как происходит выделение, инициализация и управление блоками памяти в отладочной версии базовой кучи см. в разделе Сведения о куче отладки CRT.
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость во введении.
Библиотеки
Только отладочные версии Библиотеки времени выполнения языка C.
Пример
Пример см. в разделе _CrtIsValidHeapPointer.
Эквивалент в .NET Framework
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.