В чем разница между malloc и tc_malloc?

Для кода main.c:

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

1-я компиляция: gcc main.c -o a.out

2-я компиляция: gcc main.c -ltcmalloc -o a.out

1-е использование glibc stdlib,2-е использование tcmalloc

и я могу написать main.c так:

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

3-я компиляция: gcc main.c -ltcmalloc -o a.out

3-е обязательно использовать tcmalloc

2-й и 3-й компилируются одинаково?

Я знаю, что tcmalloc поддерживает больше функций, таких как tc_malloc_size / tc_vallocЯ полагаю, использование функций tc_ * является лучшим вариантом для записи main.c, поэтому у меня есть больше функций?

Я не могу найти справочную страницу для таких функций, как tc_valloc / tc_new / tc_newarray / tc_valloc / tc_pvalloc

2 ответа

Когда загружается tcmalloc, псевдонимы malloc и free (см. Документацию gcc по псевдониму __attribute) для tc_malloc и tc_free.

Таким образом, ваш второй пробег и третий будет одинаковым.

Целью tc_malloc и tc_free является возможность непосредственного использования версий malc tcmalloc независимо от того, какие другие распределители присутствуют.

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

я нахожу эту справочную страницу обо всех функциях tcmalloc

Другие вопросы по тегам