reallocBytes +base

reallocBytes :: Ptr a -> Int -> IO (Ptr a)
base Foreign.Marshal.Alloc
Resize a memory area that was allocated with malloc or mallocBytes to the given size. The returned pointer may refer to an entirely different memory area, but will be sufficiently aligned for any of the basic foreign types that fits into a memory block of the given size. The contents of the referenced memory area will be the same as of the original pointer up to the minimum of the original size and the given size. If the pointer argument to reallocBytes is nullPtr, reallocBytes behaves like malloc. If the requested size is 0, reallocBytes behaves like free.
pooledReallocBytes :: Pool -> Ptr a -> Int -> IO (Ptr a)
base Foreign.Marshal.Pool
Adjust the storage area for an element in the pool to the given size.