2011-06-26 65 views
11

我在哪裏可以找到我的gcc編譯器目前正在使用的malloc的代碼?我實際上想寫我自己的malloc函數,它會與原始函數有點不同。我知道我可以使用鉤子等,但我想看到真實的代碼。malloc和free的代碼

+0

寫malloc(),然後得到定義。 (通常是F12) –

+0

我在Linux中工作,不使用任何調試器。我想知道它在哪裏找到的文件。 – MetallicPriest

+0

除非你只是將其作爲一種學習體驗,否則這是一個非常糟糕的主意。重新定義標準函數,特別是與malloc一樣核心的東西,會導致脆弱的,不可移植的代碼。 –

回答

15

POSIX接口是defined here

如果你想找出的GNU/Linux(glibc的)C庫是如何實現malloc,去從http://ftp.gnu.org/gnu/glibc/獲得源代碼,並期待在malloc/malloc.c文件。

還有一個描述(埃默裏)頁頭(ATOR)的理論Memory Allocator by Doug Lea的基礎文件(閱讀本carrefully,然後決定是否真的需要實現自己的malloc)。

+4

所使用的一些信息,而不是FSF/GNU支持者,但沒有地方,因爲我們正在仔細研究GNU/Linux的GNU代碼部分,所以這更好的強調了你應該說GNU/Linux的事實......希望至少Stallman能夠贊成評論:D – ShinTakezou

+1

@ ShinTakezou:如果RMS的機器人沒有檢測到我的錯誤,我將upvoted您的評論(並更正了我的答案); –

+0

+1鏈接到Doug Lea的文本 –

6

請在適當版本的glibc上查看old release sitehere。例如,如果您使用的是glib 2.9,則它位於this archive中。查找文件malloc/malloc.c

你會發現它並不是一個簡單的庫代碼。


看起來他們的glibc-2.9後更改的目錄結構。

1

我可以在線瀏覽來源here

+0

請不要發佈鏈接唯一的答案。在回答中張貼鏈接的一部分。 –