mirror of
https://github.com/gbowne1/ClassicOS.git
synced 2025-10-13 21:25:07 -07:00
mostly improvements to malloc
This commit is contained in:
@@ -55,7 +55,15 @@ void mark_as_free(void *ptr) {
|
||||
block->next = block->next->next;
|
||||
}
|
||||
|
||||
// TODO: Implement coalescing with previous block
|
||||
// Coalesce with previous block if it's free
|
||||
struct memory_block *prev = free_blocks;
|
||||
while (prev && prev->next != block) {
|
||||
prev = prev->next;
|
||||
}
|
||||
if (prev && prev->is_free) {
|
||||
prev->size += block->size + sizeof(struct memory_block);
|
||||
prev->next = block->next;
|
||||
}
|
||||
}
|
||||
|
||||
void *malloc(size_t size)
|
||||
@@ -94,4 +102,4 @@ void free(void *ptr)
|
||||
|
||||
// Mark the block as free
|
||||
mark_as_free(block);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user