la fonction malloc de la mise en œuvre?

Je suis en train de mettre en œuvre malloc et free pour le C, et je ne suis pas sûr de la façon de réutiliser la mémoire. J'ai actuellement un struct qui ressemble à ceci:

typedef struct _mem_dictionary {
    void *addr;
    size_t size;
    int freed;
} mem_dictionary;

Mon malloc ressemble à ceci:

void *malloc(size_t size) {
    void *return_ptr = sbrk(size);
    if (dictionary == NULL) 
        dictionary = sbrk(1024 * sizeof(mem_dictionary));

    dictionary[dictionary_ct].addr = return_ptr;
    dictionary[dictionary_ct].size = size;
    dictionary[dictionary_ct].freed = 1;
    dictionary_ct++;

    return return_ptr;
}

Quand j'ai de la mémoire libre, je voudrais juste marquer l'adresse 0 (qui indique que c'est gratuit). Dans mon malloc, je puis utiliser une boucle for pour rechercher une valeur dans le tableau de l'égalité des 0, et ensuite d'allouer de la mémoire à cette adresse. Je suis un peu confus comment le mettre en œuvre.

InformationsquelleAutor user675257 | 2011-03-24