【问题标题】:What's the difference between malloc and tc_malloc?malloc 和 tc_malloc 有什么区别?
【发布时间】:2015-11-21 06:16:07
【问题描述】:

对于代码 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 stdlib,第二次使用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 这样的函数的手册页

【问题讨论】:

标签: gcc tcmalloc


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 1) 这不是手册页。 2) 链接的文档甚至没有解释 tc_* 函数的作用。 3) 它没有回答问题。
    猜你喜欢
    • 2013-06-10
    • 2016-07-19
    • 2015-12-17
    • 2014-08-13
    • 2013-10-25
    • 1970-01-01
    • 2015-12-17
    • 2012-05-28
    • 2017-09-08
    相关资源
    最近更新 更多