2010-05-02 14 views
6

Zastanawiam się, który domyślny alokator pamięci w G ++ 4.4.1, na Ubuntu 9.1. Jestem zainteresowany porównaniem różnych podzielników C++ w środowisku wielowątkowym. I gdzie mogę uzyskać więcej informacji na temat domyślnego programu do przydzielania pamięci?Jaki jest domyślny przydział G ++ 4.4.1?

EDYTOWANIE: Odnoszę się do nowych operatorów i usuwania. Jedynym łącząca jest do temperatury pokojowej i Pthread

Pozdrowienia

+2

Cóż, g ++ (kompilator) nie naprawdę odebrać alokator - alokator zależy od tego, z czym łączysz (domyślnie implementacja w libc). Zależy to również od tego, czy masz na myśli malloc, czy nowego operatora. –

Odpowiedz

1

g ++ tworzy odniesienia do operatora nowego() w libstdC++, który pochodzi z G ++. To z kolei używa funkcji malloc() zdefiniowanej w bibliotece libc zainstalowanej w twoim systemie (zwykle glibc).

Większość zastępców wymiany wskaże jeden z nich na ich implementację, zwykle po prostu zastąpią malloc(). Możesz na przykład skorzystać z Google Malloc Malloc poprzez wstępne załadowanie ich udostępnionej biblioteki. Nie trzeba wprowadzać żadnych zmian w skompilowanej aplikacji.

1

G ++ nowy operator jest rzeczywiście zaimplementowany przy użyciu glibc malloc.
Samo przydzielanie pamięci jest wykonywane przy użyciu standardowego wywołania systemowego unix mmap.

Możesz uzyskać więcej informacji o swoim przydziale pamięci przy użyciu mallinfo.
Aby uzyskać więcej informacji, zobacz temat Statistics-of-Malloc i Efficiency-and-Malloc.

2

Możesz użyć zmiennej LD_PRELOAD, aby użyć własnego przydziału.
LD_PRELOAD = „/ path/your_lib_exporting_malloc.so”

Uruchomienie dowolnej aplikacji dynamicznie połączoną z glibc w tym samym terminalu będzie faktycznie korzysta z implementację malloc podałeś.
Wiele implementacji malloc jest swobodnie dostępnych.
* TLSF
* jemalloc
* dlmalloc (malloc Douga Lea, od zawsze)
* ptmalloc2 (malloc Douga Lea, rozszerzone wsparcie arenach per-wątku.)
* TCMalloc (malloc Google, twierdzi, że 6x szybciej niż ptmalloc2)
* nedmalloc (twierdzi, że jest szybszy niż tcmalloc)
* Hoard, również twierdzi, że bardzo szybko
(źródło: Josh Haberman's blog)

Powiązane problemy