Распределение памяти для массива указателей структуры
Я пытаюсь построить распределитель памяти в C. Пользователь начинает с того, сколько памяти он хочет использовать, и наименьший размер блока памяти, который может быть сделан доступным.
Так, например, предположим, что пользователь запрашивает 1024B с наименьшим размером блока 8B. Это означает, что возможные размеры блоков будут 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));
Где Order - это количество блоков разных размеров, которые вы можете иметь.
Я получаю сообщение об ошибке компиляции "FreeList" имеет неполный тип.
Я не хочу, чтобы эти указатели указывали где-либо еще, я просто хочу выделить место для данных.