A circular buffer which avoids moving data around, but instead maps the same physical memory block twice into two adjacent virtual memory blocks. It $(U does) move data blocks when growing the buffer.
A buffer that relies on moving chunks of data in memory to ensure that contiguous slices of any requested size can always be provided.
Various buffer implementations.