Который является G ++ 4.4.1 средства выделения по умолчанию?

Я задавался вопросом, который является средством выделения памяти по умолчанию в G ++ 4.4.1 на Ubuntu 9.1. Я интересуюсь сравнением различных средств выделения C++ в многопоточной среде. И где я могу получить больше информации о средстве выделения памяти по умолчанию?

Править: Я обращаюсь к новым и операторам delete. Единственное соединение к rt и pthread

С уважением

6
задан Cowboy 2 May 2010 в 21:53
поделиться

3 ответа

Вы можете использовать переменную LD_PRELOAD, чтобы использовать свой собственный распределитель.
LD_PRELOAD = "/ path / your_lib_exporting_malloc.so"

Запуск любого приложения, динамически связанного с glibc в том же терминале, фактически будет использовать предоставленную вами реализацию malloc.
Многие реализации malloc доступны бесплатно.
* TLSF
* jemalloc
* dlmalloc (malloc Дуга Ли, существует всегда)
* ptmalloc2 ( Malloc Дуга Ли, расширенный для поддержки отдельных потоков.)
* TCMalloc (Google malloc, утверждает, что он в 6 раз быстрее, чем ptmalloc2)
* nedmalloc (утверждает, что быстрее чем tcmalloc)
* Hoard, также утверждает, что он очень быстрый
(источник: Блог Джоша Хабермана )

2
ответ дан 17 December 2019 в 07:01
поделиться

G ++ создаст ссылки на оператор new () в libstdc ++, который поставляется с G ++. Это, в свою очередь, использует malloc (), определенную в libc, установленном в вашей системе (обычно glibc).

Большинство замещающих распределителей указывают один из них на свою реализацию, обычно они просто заменяют malloc (). Например, вы можете использовать Google TC Malloc, просто предварительно загрузив их общую библиотеку. Никаких изменений в скомпилированном приложении не требуется.

1
ответ дан 17 December 2019 в 07:01
поделиться

Оператор g++ new действительно реализован с помощью glibc malloc.
Само распределение памяти осуществляется с помощью стандартного системного вызова unix mmap.

Вы можете получить дополнительную информацию о вашем распределителе памяти с помощью mallinfo.
Statistics-of-Malloc и Efficiency-and-Malloc для получения дополнительной информации.

1
ответ дан 17 December 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: