Ask the subclass to create a buffer, the default implementation will call alloc if no allocated buf is provided and then call fill.
buf