0

对于代码 main.c:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    void* p = malloc(1000);
    free(p);
    return(0);
}

第一次编译: gcc main.c -o a.out

第二次编译: gcc main.c -ltcmalloc -o a.out

第一次使用 glibc 标准库,第二次使用 tcmalloc

我可以这样写 main.c :

#include <stdio.h>
#include <google/tcmalloc.h>
int main()
{
    void* p = tc_malloc(1000);
    tc_free(p);
    return(0);
}

第三次编译:gcc main.c -ltcmalloc -o a.out

第三是肯定使用 tcmalloc

第二次和第三次编译是一样的吗?

我知道 tcmalloc 支持更多的函数,比如tc_malloc_size/ tc_valloc,我想使用 tc_* 函数是编写 main.c 的更好选择,所以我有更多的函数?

我找不到像 tc_valloc / tc_new / tc_newarray / tc_valloc / tc_pvalloc 这样的函数的任何手册页

4

2 回答 2

0

加载 tcmalloc 时,malloc 和 free 被别名(参见 __attribute alias 的 gcc 文档)为 tc_malloc 和 tc_free。

所以你的第二次和第三次运行是一样的。

tc_malloc 和 tc_free 的目的是能够直接使用 malloc 的 tcmalloc 版本,而不管存在哪些其他分配器。

于 2015-10-03T18:47:32.997 回答
0

http://sourcecodebrowser.com/google-perftools/1.4/windows_2google_2tcmalloc_8h.html

我找到了这个关于所有 tcmalloc 函数的手册页

于 2015-08-27T02:38:42.027 回答