使用tcmalloc库覆盖全局new / delete和malloc / free

时间:2015-04-18 19:30:13

标签: c++ malloc new-operator 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调用如何解释为我的宏不在头文件中。

1 个答案:

答案 0 :(得分:0)

tcmalloc提供了新的/删除挂钩,可用于实现任何类型的内存使用情况跟踪/记帐。参见例如在https://github.com/gperftools/gperftools/blob/master/src/gperftools/malloc_hook.h

中添加NewHook