only use memcpy realloc to shrink if an exact-sized free chunk exists