bytesRead
- это uint8_t
, максимальное значение которого равно 255. Если у вас есть uint32_t length
, ваше смещение должно быть того же типа данных.И поскольку потенциально каждый байт может быть совпадением, ваш счетчик (возвращаемое значение) также должен быть того же типа, что и массив смещений.
Больше проблем:
if ((baseAddr + bytesRead) == Byte)
You 'Вы не разыменовываете указатель здесь, вы только проверяете его значение.Ваш компилятор должен выдавать предупреждение о несоответствии типов.
Попробуйте:
if (*(baseAddr + bytesRead) == Byte)
Наконец, вам нужно убедиться, что offsets
указывает на достаточное количество памяти.Опять же, потенциально * каждый байт может совпадать, что означает, что offsets
должен иметь ту же длину (в элементах), что и входные данные.