_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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.