我想在C中建立一個內存分配器。用戶開始說他要使用多少內存,以及可用內存的最小塊大小。內存分配的結構指針陣列
因此,例如,假設用戶請求具有8B的最小塊大小的1024B。 這意味着可能的塊大小將是1024,512,256,128,64,32,16和8.
爲了跟蹤內存的空閒塊,我有一個指向結構的指針數組。這些結構被稱爲Header,並且該數組被稱爲FreeList。 我的意思是說,FreeList [0]將包含一個指向內存中存在大小爲8的內存空間的指針.FreeList [1]將包含一個指向內存空間的指針,其中有一塊內存大小16.等
typedef void * Addr;
struct Header
{
Addr next;
int order;
};
struct Header *FreeList[];
我想分配內存此空閒列表下面的代碼使用方法:
FreeList = malloc(Order*sizeof(struct Header));
哪裏訂單是您可以有不同的塊大小的數量。
我收到編譯錯誤'FreeList'有一個不完整的類型。
我不希望這些指針指向任何地方,我只是想分配數據空間。
這是真碼嗎?您在結構定義的末尾缺少';'。如果它是一個指針數組,那麼數組的大小是多少?爲什麼你沒有在索引中指定任何內容? – Mahesh 2012-07-10 21:03:47
我很抱歉。錯字。修復。 – user1515928 2012-07-10 21:05:30
是否包含在執行分配的翻譯單元(.c)中的「Header」的定義?如果不是,'Header'只能用作指針 - 編譯器不知道它的大小。 – eran 2012-07-10 21:06:19