/
uzer_007
/
reindexer
Обзор
Документация
Войти
/
uzer_007
/
reindexer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
cpp_src/tools/alloc_ext/tc_malloc_hook.cc
49 строк
1 KB
APl
Update to version v5.6.0
29 авг 2025, 17:01
29 авг 2025, 17:01
0a131de
Код
Авторство
О чём код?
#include "tc_malloc_extension.h" #if REINDEX_WITH_GPERFTOOLS && !defined(_WIN32) #include <dlfcn.h> #include <stdlib.h> #endif // REINDEX_WITH_GPERFTOOLS namespace reindexer { namespace alloc_ext { #if REINDEX_WITH_GPERFTOOLS && defined(_WIN32) bool TCMallocHooksAreAvailable() { return true; } #elif REINDEX_WITH_GPERFTOOLS using AddNewHookFn = int (*)(MallocHook_NewHook); using AddDeleteHookFn = int (*)(MallocHook_DeleteHook); static AddNewHookFn getAddNewHookFn() { static auto add_new_hook_fn = reinterpret_cast<AddNewHookFn>(dlsym(RTLD_DEFAULT, "MallocHook_AddNewHook")); return add_new_hook_fn; } static AddDeleteHookFn getAddDeleteHookFn() { static auto add_delete_hook_fn = reinterpret_cast<AddDeleteHookFn>(dlsym(RTLD_DEFAULT, "MallocHook_AddDeleteHook")); return add_delete_hook_fn; } int MallocHook_AddNewHook(MallocHook_NewHook hook) { auto add_new_hook_fn = getAddNewHookFn(); if (add_new_hook_fn && TCMallocIsAvailable()) { return add_new_hook_fn(hook); } return 1; } int MallocHook_AddDeleteHook(MallocHook_DeleteHook hook) { auto add_delete_hook_fn = getAddDeleteHookFn(); if (add_delete_hook_fn && TCMallocIsAvailable()) { return add_delete_hook_fn(hook); } return 1; } bool TCMallocHooksAreAvailable() { return (getAddNewHookFn() != nullptr) && (getAddDeleteHookFn() != nullptr); } #endif // REINDEX_WITH_GPERFTOOLS } // namespace alloc_ext } // namespace reindexer