I've gone through the documentation but I'm still unclear about the usage of buffers with respect to arrays.
"A Buffer encapsulates a pointer and data size .... Buffers are untyped: they simply denote a physical memory area"
"The central type in Arrow is the class arrow::Array. An array represents a known-length sequence of values all having the same type. Internally, those values are represented by one or several buffers ...."
The Array section then goes on to explain how to build Arrays with the ArrayBuilder base class, and concrete subclasses. There doesn't appear to be any need to allocate buffer space first. There is also a BufferBuilder class. But since there does not appear to be a way associate a created buffer with an array, I don't understand when explicit buffer creation would be used?