From f8f1f2c0676822f9433ffa7267fbb2699d4eb65d Mon Sep 17 00:00:00 2001 From: anna_schlittenhardt Date: Sun, 24 Jan 2021 19:28:35 +0100 Subject: [PATCH] Added new function add_free() --- mm.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/mm.c b/mm.c index e3b4924..04fbc18 100644 --- a/mm.c +++ b/mm.c @@ -104,8 +104,11 @@ team_t team = { #define PUT_PTR(p, ptr) (*(unsigned int *)(p) = (unsigned int)(ptr)) -#define PRV_FREE(bp) ((char *)(bp)) -#define NXT_FREE(bp) ((char *)(bp) + WSIZE) +#define PRV_PTR(ptr) ((char *)(ptr)) +#define NXT_PTR(bp) ((char *)(bp) + WSIZE) + +#define PRV_BLK(bp) (*(char **)(bp)) +#define NXT_BLK(bp) (*(char **)(NXT_PTR(bp))) //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////// STATIC VARS ///////////////////////////////// @@ -134,6 +137,14 @@ static void add_free(void* ptr, size_t size) { int szClass = getSzClass(size); void* classPtr = seg_list[szClass]; + + while(classPtr != NULL) + { + classPtr = NXT_PTR(classPtr); + } + PUT_PTR(NXT_PTR(classPTR), ptr) + PUT_PTR(PRV_PTR(ptr), classPtr) + PUT_PTR(NXT_PTR(ptr), NULL); } static void place(void *bp, size_t asize) @@ -165,13 +176,13 @@ static void* best_fit(void* ptr, size_t asize) { unsigned long left_over = GET_SIZE(ptr) - asize; void* bestfit = ptr; int best_left_over = GET_SIZE(ptr) - asize); - while (NXT_FREE(ptr) != NULL) { + while (NXT_PTR(ptr) != NULL) { left_over = GET_SIZE(ptr) - asize); if(left_over