diff options
| author | _ov4 <ov4@ov4.org> | 2026-11-03 07:28:41 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-11-03 07:28:41 +0000 |
| commit | a78b0cbb0ea7308af37dad63a721e14ed93c9279 (patch) | |
| tree | ac99128e96ce7db4aa1452331977b3abc9a0f55e /malloclab-handout/mm-implicit.cc | |
| parent | c0eceda8b0e7d120c2facc595730921280846f67 (diff) | |
module
Diffstat (limited to 'malloclab-handout/mm-implicit.cc')
| -rw-r--r-- | malloclab-handout/mm-implicit.cc | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/malloclab-handout/mm-implicit.cc b/malloclab-handout/mm-implicit.cc index ecc40a9..624af8c 100644 --- a/malloclab-handout/mm-implicit.cc +++ b/malloclab-handout/mm-implicit.cc @@ -24,8 +24,6 @@ using namespace std; -void print_list(); - /********************************************************* * NOTE TO STUDENTS: Before you do anything else, please * provide your team information in the following struct. @@ -89,9 +87,7 @@ void *mm_malloc(size_t size) loggerln("sbrk {}", newsize); loggerln("max addr {}", offset((size_t)mem_heap_hi())); - set_size(status, newsize); - set_alloc(status, false); - set_prev_alloc(status, prev_alloc); // TODO + status = stat_pack(newsize, false, prev_alloc); *(size_t*)p = status; } @@ -118,9 +114,7 @@ void *mm_malloc(size_t size) size_t oldsize = get_size(status); - set_size(status, newsize); - set_alloc(status, true); - set_prev_alloc(status, prev_alloc); // TODO + status = stat_pack(newsize, true, prev_alloc); *(size_t*)p = status; void *ret = (void*)((char*)p + SIZE_T_SIZE); @@ -130,10 +124,11 @@ void *mm_malloc(size_t size) if (oldsize > newsize) { size_t free_status = 0; - set_size(free_status, oldsize - newsize); - set_alloc(free_status, false); - set_prev_alloc(free_status, true); // becomes: ALLOC FREE - // so definitely prev_alloc=true for FREE part + + // becomes: ALLOC FREE + // so definitely prev_alloc=true for FREE part + free_status = stat_pack(oldsize - newsize, false, true); + size_t free_header_p = p+newsize; *(size_t*)(free_header_p) = free_status; sync_footer(free_header_p); |
