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


Версии отладки функций выделения кучи

Библиотека CRT содержит специальные отладочные версии функций выделения кучи.Эти функции называются так же, как и их версии для выпуска с присоединенным к ним _dbg.В этом разделе описываются различия между версией функции CRT для окончательного выпуска и версией _dbg; для примера взяты mallocи _malloc_dbg.

Если указано _DEBUG, CRT преобразует все вызовы malloc в вызовы _malloc_dbg.Таким образом, чтобы получить преимущества режима отладки, не придется переписывать код и заменять _malloc_dbg на malloc.

Конечно, при желании можно и явно вызывать _malloc_dbg.Явный вызов _malloc_dbg имеет свои преимущества:

  • Отслеживание выделений типа _CLIENT_BLOCK.

  • Запись имени исходного файла и номера строки, где был сделан запрос на выделение памяти.

Если не нужно преобразовывать вызовы malloc в _malloc_dbg, данные исходного файла можно получить путем определения _CRTDBG_MAP_ALLOC, который заставляет препроцессор непосредственно преобразовывать все вызовы malloc в вызовы _malloc_dbg вместо применения оболочки для malloc.

Чтобы отследить отдельные типы выделений памяти в клиентских блоках, нужно непосредственно вызвать функцию _malloc_dbg и задать параметру blockType значение _CLIENT_BLOCK.

Если _DEBUG не определен, вызовы malloc не задействуются, вызовы _malloc_dbg преобразуются в вызовы malloc, определения _CRTDBG_MAP_ALLOC не обрабатываются, а данные исходного файла относительно запросов на выделение не предоставляются.Поскольку mallocне имеет параметра типа блока, запросы на тип _CLIENT_BLOCK обрабатываются как стандартные выделения.

См. также

Другие ресурсы

Методы отладки CRT