realloc returns a new pointer