Я пытаюсь реализовать 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
, а затем выделял бы память на этот адрес. Я немного смущен, как реализовать это.