Speicherzuordnung für Array von Strukturzeigern

Ich versuche, einen Speicherzuweiser in C zu erstellen. Der Benutzer gibt zunächst an, wie viel Speicher er verwenden möchte und welche Blockgröße verfügbar sein kann.

Angenommen, der Benutzer fordert 1024B mit der kleinsten Blockgröße von 8B an. Das heißt, die möglichen Blockgrößen wären 1024, 512, 256, 128, 64, 32, 16 und 8.

Um die freien Speicherblöcke im Auge zu behalten, habe ich eine Reihe von Zeigern auf Strukturen. Diese Strukturen heißen Header und das Array heißt FreeList. Was ich meine, ist, dass FreeList [0] einen Zeiger auf den Speicherbereich enthält, in dem sich ein Speicherblock der Größe 8 befindet. FreeList [1] enthält einen Zeiger auf den Speicherbereich, in dem sich ein Speicherblock der Größe 16 befindet . usw.

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

struct Header *FreeList[];

Ich versuche, Speicher für diese kostenlose Liste mit dem folgenden Code zuzuweisen:

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

Wobei Reihenfolge die Anzahl der verschiedenen Blockgrößen ist, die Sie haben können.

Ich erhalte den Kompilierungsfehler 'FreeList' hat einen unvollständigen Typ.

Ich möchte, dass diese Zeiger noch nirgendwo hinweisen. Ich möchte nur den Speicherplatz für die Daten zuweisen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage