2011-06-26 13 views
11

Gdzie mogę znaleźć kod malloc, którego używa mój kompilator gcc? Naprawdę chcę napisać własną funkcję malloc, która będzie trochę inna niż oryginalna. Wiem, że mogę używać hooków i wszystkich, ale chcę zobaczyć prawdziwy kod.Kod dla malloc i bezpłatny

+0

napisać malloc(), a następnie do definicji. (Zazwyczaj F12) –

+0

Pracuję w Linuksie i nie używam żadnego debuggera. Chcę poznać plik, w którym został znaleziony. – MetallicPriest

+0

Jeśli nie robisz tego jako nauki, jest to bardzo zły pomysł. Szturchanie z przedefiniowaniem standardowych funkcji, zwłaszcza tak podstawowych, jak malloc, skutkuje kruchym, nieprzenośnym kodem. –

Odpowiedz

15

interfejsu POSIX malloc jest defined here.

Jeśli chcesz dowiedzieć się, jak biblioteka C w GNU/Linux (glibc) realizuje malloc, idź i pobrać kod źródłowy z http://ftp.gnu.org/gnu/glibc/ i zajrzeć do pliku malloc/malloc.c.

Istnieje również dokumentacja podstawowa Memory Allocator by Doug Lea opisujący teorię m (Emory) alloc (ator) (przeczytaj ten carrefully, a następnie zdecydować, czy naprawdę trzeba zaimplementować własną malloc).

+4

, aby nie być adwokatem FSF/GNU, ale nie ma miejsca, ponieważ lepiej jest podkreślić fakt, że powinieneś powiedzieć GNU/Linux, ponieważ dokładnie patrzymy na część kodu GNU/Linuksa na temat GNU ... Nadzieja, że ​​przynajmniej Stallman upowszechni komentarz: D – ShinTakezou

+1

@ ShinTakezou: Podniosłem komentarz (i poprawiłem odpowiedź) na wypadek, gdyby bot RMS nie wykrył mojego błędu;) –

+0

+1 dla linku do tekstu Doug Lea –

6

Sprawdź w odpowiednim wydaniu glibc pod adresem old release site lub here. Na przykład, jeśli używasz glib 2.9, jest to this archive. Poszukaj pliku malloc/malloc.c.

Zobaczysz, że nie jest to banalny fragment kodu biblioteki.


Wygląda na to, że zmienił strukturę katalogów po glibc-2.9.

1

Jestem w stanie przeglądać źródło online here.

+0

Nie publikuj odpowiedzi tylko na link. Opublikuj część linku w odpowiedzi. –