From e65ab8192b88f2d752cabb8e7ca96a54962f2fb6 Mon Sep 17 00:00:00 2001 From: Renge Date: Fri, 25 Mar 2022 21:51:46 -0400 Subject: [PATCH] fix: remove from edge --- hw3/src/main.c | 20 +------------------- hw3/src/sfmm.c | 6 ++++++ 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/hw3/src/main.c b/hw3/src/main.c index 3dc54e9..1721029 100644 --- a/hw3/src/main.c +++ b/hw3/src/main.c @@ -5,26 +5,8 @@ int main(int argc, char const *argv[]) { sf_set_magic(0x0); - size_t sz_u = 200, sz_v = 150, sz_w = 50, sz_x = 150, sz_y = 200, sz_z = 250; - void *u = sf_malloc(sz_u); - sf_show_heap(); - /* void *v = */ sf_malloc(sz_v); - sf_show_heap(); - void *w = sf_malloc(sz_w); - sf_show_heap(); - /* void *x = */ sf_malloc(sz_x); - sf_show_heap(); - - void *y = sf_malloc(sz_y); - sf_show_heap(); - /* void *z = */ sf_malloc(sz_z); + sf_malloc(4032); sf_show_heap(); - sf_free(u); - sf_show_heap(); - sf_free(w); - sf_show_heap(); - sf_free(y); - return EXIT_SUCCESS; } diff --git a/hw3/src/sfmm.c b/hw3/src/sfmm.c index 28bf0ec..2268934 100644 --- a/hw3/src/sfmm.c +++ b/hw3/src/sfmm.c @@ -100,6 +100,12 @@ void *sf_malloc(sf_size_t size) sf_block *last = get_prev_block(epi); if (get_alloc(last->header) == 1) last = epi; + if (last->body.links.next != NULL) + { + last->body.links.next->body.links.prev = last->body.links.prev; + last->body.links.prev->body.links.next = last->body.links.next; + } + sf_size_t require_size = min_size - get_block_size(last->header); size_t i = 0; for (; i < require_size; i += 1024)