Обсуждение:Кольцевой буфер

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Возможно ошибка в примере.[править код]

Обнаружил возможные неточности в примере:

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)[ответить]