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.