_malloc_dbg
Выделяет блок памяти в куче с дополнительным пространством для заголовка отладки и буферов перезаписи (только отладочная версия).
void *_malloc_dbg( size_t size, int blockType, const char *filename, int linenumber );
Параметры
size
Запрошенный размер блока памяти (байт).blockType
Запрошенный тип блока памяти: _CLIENT_BLOCK или _NORMAL_BLOCK.filename
Указатель на имя исходного файла, который запросил операцию выделения, или NULL.linenumber
Номер строки в исходном файле, в которой была запрошена операция выделения, или NULL.
Параметры filename и linenumber доступны, только если функция _malloc_dbg была явно вызвана или была определена константа препроцессора _CRTDBG_MAP_ALLOC.
Возвращаемое значение
При успешном выполнении эта функция возвращает указатель на пользовательскую часть выделенного блока памяти, вызывает новую функцию обработчика или возвращает значение NULL. Полное описание поведения возвращения см. в следующем разделе "Примечания". Дополнительные сведения о том, как используется новая функция обработчика, см. в описании функции malloc.
Заметки
_malloc_dbg — это отладочная версия функции malloc. Если _DEBUG не определен, каждый вызов функции _malloc_dbg сокращается до вызова функции malloc. И malloc, и _malloc_dbg выполняют выделение блока памяти в основной куче, однако _malloc_dbg включает различные функции отладки: буферы на обеих сторонах пользовательской части блока для тестирования утечек, параметр типа блока для отслеживания конкретных типов выделения, а также сведения о filename/linenumber для определения источника запросов на выделение.
_malloc_dbg выделяет блок памяти, добавив немного больше пространства, чем запрошено size. Дополнительное пространство используется диспетчером кучи отладки, чтобы связать блоки памяти отладки и предоставить приложению сведения о заголовке отладки и буферы перезаписи. При выделении блока пользовательская часть блока заполняется значением 0xCD, а все буферы перезаписи — значением 0xFD.
_malloc_dbg задает для errno значение ENOMEM в случае сбоя выделения памяти или если необходимый объем памяти (включая ранее упомянутую нагрузку) превышает _HEAP_MAXREQ. Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlist, and _sys_nerr.
Сведения о выделении, инициализации и управлении блоками памяти в отладочной версии основной кучи см. в разделе Сведения о куче отладки CRT. Сведения о типах блоков выделения и о том, как они используются, см. в разделе Типы блоков в отладочной куче. Сведения о различиях между вызовом стандартной функции кучи и ее отладочной версии в сборке отладки приложения см. в разделе Версии отладки функций выделения кучи.
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
_malloc_dbg |
<crtdbg.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость во введении.
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
Пример использования _malloc_dbg см. в описании crt_dbg1.
Эквивалент в .NET Framework
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызова неуправляемого кода.