В системе, где динамическое выделение памяти не разрешено (т.е. не используется std :: vector и т. Д.), Каков хороший способ создать буферный класс фиксированного размера без использования шаблонов?
A заметилимой размер исполняемого файла начинает ползти из-за повторной генерации кода.
В настоящее время у меня есть шаблон, похожий на этот, обратите внимание, что Fifo не обязательно фактическое приложение, просто упрощенный пример.
template <int S>
class FixedSizeFifo
{
private:
std::array<uint8_t, S> mBuf;
public:
PushFunction() {...}
PopFunction() {...}
};
FixedSizeFifo<1000> myTransmitFifo;
FixedSizeFifo<100> myReceiveFifo;
Мое первое очевидное решение состояло в том, чтобы сначала выделить хранилище, а затем передать указатель и размер в класс Fifo, но это обеспечивает больший код инициализации и управление указателями и т. Д.
class FixedSizeFifo
{
private:
uint8_t * mBuf;
size_t mBufSize;
public:
FixedSizeFifo() = delete; // And other copy constructors/operators
FixedSizeFifo(uint8_t * buf, size_t s) : mBuf(buf), mBufSize(s) {}
PushFunction() {...}
PopFunction() {...}
};
std::array<uint8_t, 1000> txBuf;
auto myTransmitFifo = FixedSizeFifo(txBuf.data(), txBuf.size());
std::array<uint8_t, 100> rxBuf;
auto myReceiveFifo = FixedSizeFifo(rxBuf.data(), rxBuf.size());
Какие другие интересные методыдля приложений хранения фиксированного размера, как это?
Спасибо ...