Asignación de memoria para la matriz de punteros de estructura

Estoy tratando de construir un asignador de memoria en C. El usuario comienza diciendo la cantidad de memoria que quiere usar y el tamaño de bloque más pequeño que puede estar disponible.

Entonces, por ejemplo, digamos que el usuario solicita 1024B con el tamaño de bloque más pequeño de 8B. Eso significa que los posibles tamaños de bloque serían 1024, 512, 256, 128, 64, 32, 16 y 8.

Para realizar un seguimiento de los bloques de memoria libres, tengo una serie de punteros a las estructuras. Estas estructuras se denominan Encabezado y la matriz se llama FreeList. Lo que quiero decir es que FreeList [0] contendría un puntero al espacio en la memoria donde hay un bloque de memoria de tamaño 8. FreeList [1] contendría un puntero al espacio en la memoria donde hay un bloque de memoria de tamaño 16 etc.

typedef void * Addr;
struct Header
{
    Addr next;
    int order;
};

struct Header *FreeList[];

Estoy tratando de asignar memoria para que esta lista gratuita se use con el siguiente código:

FreeList = malloc(Order*sizeof(struct Header));

Donde Orden es la cantidad de bloques de diferentes tamaños que puedes tener.

Recibo el error de compilación 'FreeList' tiene un tipo incompleto.

No quiero que estos punteros apunten a ningún lado todavía, solo quiero asignar el espacio para los datos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta