В чем разница между 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