Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Выделяет блок памяти в куче с дополнительным пространством для заголовка отладки и перезаписи буферов (только для отладки).
Синтаксис
void *_malloc_dbg(
size_t size,
int blockType,
const char *filename,
int linenumber
);
Параметры
size
Запрошенный размер блока памяти (байт).
blockType
Запрошенный тип блока памяти: _CLIENT_BLOCK или _NORMAL_BLOCK.
filename
Указатель на имя исходного файла, который запросил операцию выделения, или NULL.
linenumber
Номер строки в исходном файле, в которой была запрошена операция выделения, или NULL.
linenumber Параметры filename доступны только при _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_sys_nerr.
Сведения о выделении, инициализации и управлении блоками памяти в отладочной версии базовой кучи см. в сведениях об отладочной куче CRT. Сведения о типах блоков выделения и их использовании см. в разделе "Типы блоков" в куче отладки. Сведения о различиях между стандартными функциями кучи и версиями отладки см. в разделе "Отладка версий функций выделения кучи".
Требования
| Маршрут | Обязательный заголовок |
|---|---|
_malloc_dbg |
<crtdbg.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
Пример использования _malloc_dbgсм. в разделе crt_dbg1.