Меню

Главная
Случайная статья
Настройки
Обсуждение:Кольцевой буфер
Материал из https://ru.wikipedia.org

Возможно ошибка в примере.

Обнаружил возможные неточности в примере:
int RingBuffer_trywrite(RingBuffer* rb, char c) {
...
rb->writeptr += tmp; // Здесь...
...
}
int RingBuffer_tryread(RingBuffer* rb, char* c) {
...
rb->readptr += tmp; // и здесь.
...
}


Нарушение логики. Сначала вычисляем новое значение указателя для записи/чтения
char* tmp = rb->writeptr + CHAR_SIZE;


а потом записываем сумму старого и нового значений…
rb->writeptr += tmp;


Может нужно так?
rb->writeptr = tmp;


— Эта реплика добавлена с IP 193.34.160.185 (о) 08:30, 25 сентября 2021 (UTC)[ответить]
Downgrade Counter