我想在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