我正在尝试为C语言实现malloc
和free
函数,但我不确定如何重复利用内存。我目前有一个长这样的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
的地址,然后为该地址分配内存。我有点困惑如何实现这一点。