From 27e75d248baf04bf6c1c012efd446ea5cae1d5dd Mon Sep 17 00:00:00 2001 From: anna_schlittenhardt Date: Sun, 24 Jan 2021 18:08:02 +0100 Subject: [PATCH 1/2] Added new function add_free() --- mm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mm.c b/mm.c index 86f9c80..e3b4924 100644 --- a/mm.c +++ b/mm.c @@ -130,6 +130,12 @@ static void* extend_heap(size_t words); //////////////////////////////////////////////////////////////////////////////// /////////////////////////////// HELPER FUNCTIONS /////////////////////////////// //////////////////////////////////////////////////////////////////////////////// +static void add_free(void* ptr, size_t size) +{ + int szClass = getSzClass(size); + void* classPtr = seg_list[szClass]; +} + static void place(void *bp, size_t asize) { size_t csize = GET_SIZE(HDRP(bp)); @@ -152,7 +158,7 @@ static int getSzClass(size_t asize) { return i; } } - return LISTSIZE; + return LISTSIZE-1; } static void* best_fit(void* ptr, size_t asize) { @@ -313,6 +319,7 @@ void *mm_malloc(size_t size) void mm_free(void *ptr) { size_t size = GET_SIZE(HDRP(ptr)); + add_free(ptr, size); PUT(HDRP(ptr), PACK(size, 0)); PUT(FTRP(ptr), PACK(size, 0)); From f8f1f2c0676822f9433ffa7267fbb2699d4eb65d Mon Sep 17 00:00:00 2001 From: anna_schlittenhardt Date: Sun, 24 Jan 2021 19:28:35 +0100 Subject: [PATCH 2/2] 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