Un buffer circolare è un array di dimensione fissa trattato come se i suoi estremi fossero uniti in un anello. Due indici — head (lettura) e tail (scrittura) — avanzano e si avvolgono usando l'aritmetica modulo, fornendo una coda FIFO O(1) con nessuna allocazione dopo la creazione.
Come funziona l'avvolgimento
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)
