Przydział pamięci dla tablicy wskaźników struktury
Próbuję zbudować alokator pamięci w C. Użytkownik zaczyna od wypowiedzenia, ile pamięci chce użyć i najmniejszego rozmiaru bloku pamięci, który można udostępnić.
Na przykład, powiedzmy, że użytkownik żąda 1024B z najmniejszym rozmiarem bloku 8B. Oznacza to, że możliwe rozmiary bloków będą wynosić 1024, 512, 256, 128, 64, 32, 16 i 8.
Aby śledzić wolne bloki pamięci, mam tablicę wskaźników do struktur. Struktury te nazywane są nagłówkami, a tablica nazywa się FreeList. Chodzi mi o to, że FreeList [0] zawierałby wskaźnik do miejsca w pamięci, w którym znajduje się blok wielkości pamięci 8. FreeList [1] zawierałby wskaźnik do miejsca w pamięci, w którym znajduje się blok pamięci o rozmiarze 16 itd.
typedef void * Addr;
struct Header
{
Addr next;
int order;
};
struct Header *FreeList[];
Próbuję przydzielić pamięć dla tej bezpłatnej listy do użycia z następującym kodem:
FreeList = malloc(Order*sizeof(struct Header));
Gdzie kolejność to liczba różnych rozmiarów bloków, które możesz mieć.
Dostaję błąd kompilacji „FreeList” ma niekompletny typ.
Nie chcę, żeby te wskaźniki wskazywały gdziekolwiek, chcę tylko przydzielić miejsce na dane.