void *m61_realloc(void *ptr, size_t sz, const char *file, int line) { (void) file, (void) line; // avoid uninitialized variable warnings void *new_ptr = NULL; if (sz != 0) new_ptr = m61_malloc(sz,file,line); if (ptr != NULL && new_ptr != NULL) { metadata *meta_ptr=getMetadata(ptr); size_t old_sz = meta_ptr->sz; if (old_sz < sz) memcpy(new_ptr, ptr, old_sz); else memcpy(new_ptr, ptr, sz); } m61_free(ptr,file, line); return new_ptr; }
void* m61_realloc(void* ptr, size_t sz, const char* file, int line) { void *new_ptr = NULL; if (sz) new_ptr = m61_malloc(sz, file, line); if (ptr && new_ptr) { // Copy the data from `ptr` into `new_ptr`. // To do that, we must figure out the size of allocation `ptr`. // Your code here (to fix test012). size_t old_sz = ((struct header *) ptr - 1)->alloc_size; if (old_sz < sz) memcpy(new_ptr,ptr,old_sz); else memcpy(new_ptr,ptr,sz); } m61_free(ptr, file, line); return new_ptr; }
void* m61_realloc(void* ptr, size_t sz, const char* file, int line) { //void* new_ptr = NULL; m61_metadata* new_ptr = NULL; if (sz) new_ptr = m61_malloc(sz, file, line); if (ptr && new_ptr) { // Copy the data from `ptr` into `new_ptr`. // To do that, we must figure out the size of allocation `ptr`. // Your code here (to fix test012). m61_metadata *itismeta = ptr; m61_metadata *meta = itismeta - sizeof(m61_metadata); m61_metadata new_meta = { (meta->size) }; new_ptr -= sizeof(m61_metadata); memcpy(new_ptr,&new_meta,sizeof(m61_metadata)); new_ptr += sizeof(m61_metadata); } m61_free(ptr, file, line); return new_ptr; }