Я пытаюсь реализовать malloc и free для C, и я не уверен, как повторно использовать память. В настоящее время у меня есть struct, который выглядит так:
typedef struct _mem_dictionary {
void *addr;
size_t size;
int freed;
} mem_dictionary;
Мой malloc выглядит следующим образом:
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;
}
Когда я освобожу память, я бы просто пометил адрес как 0 (это означало бы, что оно бесплатное). В моем malloc я использовал бы цикл for для поиска любого значения в массиве равным 0, а затем выделял бы память на этот адрес. Я немного смущен, как реализовать это.