From a9b44ec9fa94b9d3adb40681893ced0d339fd8d7 Mon Sep 17 00:00:00 2001 From: Isidro Arias Date: Tue, 26 Nov 2024 15:03:34 +0100 Subject: [PATCH] exersise 2 solution --- exersise_2_split.patch | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 exersise_2_split.patch diff --git a/exersise_2_split.patch b/exersise_2_split.patch new file mode 100644 index 0000000..8c7beef --- /dev/null +++ b/exersise_2_split.patch @@ -0,0 +1,21 @@ +diff --git a/malloc.c b/malloc.c +--- a/malloc.c ++++ b/malloc.c +@@ -86,7 +86,16 @@ void *malloc(size_t size) { + return NULL; + } + } else { // Found free block +- // TODO: consider splitting block here. ++ if ((block->size - size) > META_SIZE ){ ++ // split block ++ struct block_meta *new_block = (void *)(block + 1) + size; ++ new_block->next = block->next; ++ new_block->free = 1; ++ new_block->magic = 0x66666666; ++ new_block->size = block->size - size - META_SIZE; ++ block->size = size; ++ block->next = new_block; ++ } + block->free = 0; + block->magic = 0x77777777; + }