_CrtSetAllocHook

Задает клиент-определенная функция распределения, циклический ее среды выполнения c отладка процесса выделения памяти (отладочные версии).

_CRT_ALLOC_HOOK _CrtSetAllocHook(
   _CRT_ALLOC_HOOK allocHook 
);

Параметры

  • allocHook
    Новая функция клиент-определенная распределения в обработчик среды выполнения c процесс отладки выделения памяти.

Возвращаемое значение

Возвращает предварительно определенную функцию обработчика распределения или NULL If allocHook существует NULL.

Заметки

_CrtSetAllocHook позволяет приложению к обработчику собственной функции размещения среды выполнения c процесс отладки выделения памяти библиотеки.В результате каждый вызов функции распространения отладки для выбора reallocate или освободить блок памяти, чтобы активировать вызов функции обработчика приложения._CrtSetAllocHook предоставляет приложение с простым методом для тестирования, как приложение обрабатывает недостаточность ситуации памяти, возможность просмотра шаблонов выделения и возможность записывать данные в журнал распространения для последующего анализа.После _Отладка не указывает, вызовы _CrtSetAllocHook удалите во время предварительной обработки.

_CrtSetAllocHook функция задает новая функция, определенная в клиент-определенная распределения allocHook и возвращает предварительно определенную функцию обработчика.В следующем примере показано, как клиент-определенный механизм распределения должен быть prototyped:

int YourAllocHook( int allocType, void *userData, size_t size, int 
blockType, long requestNumber, const unsigned char *filename, int 
lineNumber);

allocType аргумент указывает тип операции выделения памяти (_HOOK_ALLOC" _HOOK_REALLOCи _HOOK_FREE), активировало вызов функции-ловушки выделения.Если активируя тип распределения _HOOK_FREE" userData указатель на раздел пользователей блока памяти, который необходимо освободить.Однако если активируя тип распределения _HOOK_ALLOC OR _HOOK_REALLOC" userData существует NULL поскольку блок памяти не был установлен.

size задает размер блока памяти в байтах blockType указывает тип блока памяти requestNumber порядковый номер объекта блока распределения памяти, и, если возможно), filename и lineNumber укажите значение имени файла и линии источника, активируя операция была проведена распределения.

После завершения функции обработчика обработки, она должна возвращать логическое значение, которое указывает главному в процесс среды выполнения распределения, как продолжить.Когда функция обработчика хочет продолжить процесс распространения основных обработчиков, если функция не вызывалась, а функция-ловушка должна возвращать TRUE.Это приводит к исходному активируя операции выделения памяти для выполнения.Используя эту реализацию, функция обработчика может собирать и сохранять данные о размещении для последующего анализа без мешать с текущим состоянием операции выделения или отладочной кучи.

Когда функция обработчика хочет продолжить процесс основного выделения вызывалась активируя если операция завершилась неудачей распределения и его, а функция-ловушка должна возвращать FALSE.Используя эту реализацию, функция обработчика может имитировать широкий диапазон условий памяти и состояния кучи отладки для тестирования, как приложение обрабатывает каждую ситуацию.

Чтобы очистить функция обработчика, передайте NULL В _CrtSetAllocHook.

Дополнительные сведения о способах _CrtSetAllocHook может использоваться с другими функциями управления памятью или как написать собственные клиент-определенные функции обработчика см. в разделе Создавать собственные функции обработчика отладки.

ПримечаниеПримечание

_CrtSetAllocHook не поддерживает вниз /clr:pure.

Требования

Процедура

Обязательный заголовок

_CrtSetAllocHook

<crtdbg.h>

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

Библиотеки

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

Пример

Пример использования _CrtSetAllocHookсм. crt_dbg2.

Эквивалент в .NET Framework

Неприменимо. Для c# используйте стандартная функция PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Подпрограммы отладка

_CrtGetAllocHook