Согласен, чета я все смешал в кучу. Упущен существенный вопрос, что
представляют из себя "новые данные". Ежели это просто очередной
символ - то набор вариантов один. Ежели это как-то форматированный
блок данных (например строки лога) - то варианты другие. По поводу
ковыряний с индексами - согласен, тоже вариант. Особенно на
современных процах - сделал индекс типа uint32_t и лишних битов
хватит на любой разумный размер буфера.
Не надо делать мне как лучше, оставьте мне как хорошо