malloc和tc_malloc有什么区别?

时间:2015-08-27 02:17:26

标签: gcc tcmalloc

代码main.c:

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

第一次编译:{{1​​}}

第二次编译:{{1​​}}

第一次使用glibc stdlib,第二次使用tcmalloc

我可以像这样编写main.c:

gcc main.c -o a.out

第3次编译:{{1​​}}

第3个肯定是使用tcmalloc

第二和第三编译是否相同?

我知道tcmalloc支持更多函数,如gcc main.c -ltcmalloc -o a.out / #include <stdio.h> #include <google/tcmalloc.h> int main() { void* p = tc_malloc(1000); tc_free(p); return(0); } ,我想使用tc_ *函数是编写main.c的更好选项,所以我有更多的函数?

我找不到像tc_valloc / tc_new / tc_newarray / tc_valloc / tc_pvalloc

这样的函数的任何手册页

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

所以你的第二轮和第三轮将是相同的。

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