Alocação de memória para matriz de ponteiros de estrutura

Eu estou tentando construir um alocador de memória em C. O usuário começa dizendo quanta memória ele deseja usar e o menor tamanho de bloco de memória que pode ser disponibilizado.

Então, por exemplo, digamos que o usuário solicite 1024B com o menor tamanho de bloco de 8B. Isso significa que os possíveis tamanhos de bloco seriam 1024, 512, 256, 128, 64, 32, 16 e 8.

Para acompanhar os blocos livres de memória, tenho uma matriz de ponteiros para estruturas. Essas estruturas são chamadas de cabeçalho e a matriz é chamada FreeList. O que quero dizer é que FreeList [0] conteria um ponteiro para o espaço na memória onde há um bloco de tamanho de memória 8. FreeList [1] conteria um ponteiro para o espaço na memória onde há um bloco de tamanho de memória 16 etc.

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

struct Header *FreeList[];

Estou tentando alocar memória para essa lista livre para usar com o seguinte código:

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

Onde Order é o número de tamanhos de bloco diferentes que você pode ter.

Estou recebendo o erro de compilação 'FreeList' tem um tipo incompleto.

Eu não quero que esses ponteiros apontem para qualquer lugar ainda, eu só quero alocar o espaço para os dados.

questionAnswers(1)

yourAnswerToTheQuestion