LINUX.ORG.RU

Зачем пишут свою реализацию malloc?


0

3

Зачем пишут свою реализацию malloc?

Посмотрел исходники redis, memcached - там имеется своя функция для этого. Пока только понял что это используется для учёта занятой памяти и степени фрагментации.


в redis это не своя реализация malloc, это просто обертка над либсишным malloc

redixin ★★★★
()

в memcached тоже ничего такого нету, везде обычные malloc

redixin ★★★★
()

Ясно, спасибо. Проясняется.

ur
() автор топика

Я уже где-то на ЛОРе говорил об удобстве обертки над malloc'ом, хранящей размер выделенной области памяти (это может сэкономить realloc'и).

Eddy_Em ☆☆☆☆☆
()

Анонимус разбушевался.

encyrtid ★★★★★
()

В основном, для оптимизации. Разные аллокаторы по-разному работают в разных сценариях использования.

dmitry_vk ★★★
()
Ответ на: комментарий от dmitry_vk

Да, в Redis как я понял при вызове zmalloc может ещё использоваться jemalloc либо tcmalloc в зависимости от компиляции.

ur
() автор топика

Зачем пишут свою реализацию malloc?

Потому что есть разные алгоритмы размещения памяти которые по разному себя ведут в случае, например, SMP и мультитредовых программ. То что в glibc (ptmalloc) это тоже _один из_ возможных аллокаторов, другие возможные - jemalloc (FreeBSD, NetBSD, Firefox), hoard, nedmalloc, tcmalloc (google-perftools) и т.п.

quasimoto ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.