Um circular buffer é um array de tamanho fixo tratado como se suas extremidades fossem unidas em um anel. Dois índices — head (leitura) e tail (escrita) — avançam e envolvem usando aritmética de módulo, fornecendo uma fila FIFO O(1) sem alocação após a criação.
Como o envolvimento funciona
text
capacity 5, after writing A,B,C,D and reading A,B:
index: 0 1 2 3 4
[ . ][ . ][ C ][ D ][ . ]
head^ tail^ (tail wraps to 0 next write)
