Переопределить глобальные новые / удалить и malloc / free с помощью библиотеки tcmalloc

Я хочу переопределить new / delete и malloc / free. У меня есть библиотека tcmalloc, связанная в моем приложении. Моя цель — добавить статистику.

Из новых я звоню malloc. Ниже приведен пример, это глобально.

void* my_malloc(size_t size, const char *file, int line, const char *func)
{
void *p = malloc(size);
....
....
....
return p;
}

#define malloc(X) my_malloc(X, __FILE__, __LINE__, __FUNCTION__)

void *
operator new(size_t size)
{
auto new_addr = malloc(size);
....
...
return new_addr;
}

Новый / удалить переопределение работает нормально.

Мой вопрос, что происходит с другим файлом, где я использую malloc, например, напрямую

first.cpp
malloc(sizeof(..))

second.cpp
malloc(sizeof(..))

Как этот вызов malloc get интерпретирует как мой макрос не в заголовочном файле.

0

Решение

tcmalloc предоставляет новые / удаляемые хуки, которые можно использовать для реализации любого вида отслеживания / учета использования памяти. Смотрите, например AddNewHook in https://github.com/gperftools/gperftools/blob/master/src/gperftools/malloc_hook.h

0

Другие решения


По вопросам рекламы [email protected]