added realloc

This commit is contained in:
Micah Moore 2022-11-11 18:42:46 -05:00
parent cabd49cb4f
commit 08198ed242

37
mm.c
View File

@ -212,6 +212,35 @@ void mm_free(void *bp)
//~ } //~ }
//~ } //~ }
void *mm_realloc(void *ptr, size_t size) {
void *new_ptr = NULL;
if (ptr == NULL) {
return mm_malloc(size);
}
if (size == 0) {
mm_free(ptr);
return NULL;
}
struct block *oldblock = ptr - offsetof(struct block, payload);
size_t oldwords = blk_size(oldblock);
size_t oldsize = oldwords * WSIZE;
if (!(new_ptr = mm_malloc(size))) {
return NULL;
}
if (size < oldsize) {
oldsize = size;
}
memcpy(new_ptr, ptr, oldsize);
mm_free(ptr);
return new_ptr;
}
static struct block *coalesce(struct block *bp) static struct block *coalesce(struct block *bp)
{ {
bool prev_alloc = prev_blk_footer(bp)->inuse; /* is previous block allocated? */ bool prev_alloc = prev_blk_footer(bp)->inuse; /* is previous block allocated? */
@ -275,9 +304,9 @@ static struct block *extend_heap(size_t words, int realloc)
} }
list_push_front(find_list(words), &blk->elem); list_push_front(find_list(words), &blk->elem);
// NOT IMPLEMENTED YET
//return coalesce(blk); return coalesce(blk);
return NULL;
} }
@ -342,7 +371,7 @@ static struct block *find_fit(size_t num_words)
} }
team_t team = { team_t team = {
"?", // team name "Micah Moore Felicia Seo",
"Micah Moore", "Micah Moore",
"micahmoore@vt.edu", "micahmoore@vt.edu",
"Felicia Seo", "Felicia Seo",