Извините, что не сразу ответил. Украинская тема отвлекает. Итак, не
совсем понятно - одинаковый размер структур или разный. Потому что
в коде я вижу фиксированный размер. Если структурки небольшие, то я
бы сделал _все_ одинакового размера (по максимальной). Если нужен
разный размер, то надо иметь возможность вычислять размер структур
и данных, их положение в потоке относительно исходной точки -
начала файла, пакета, заголовка (header). Возможно, потом у вас
идут структуры, например, FOLDER_t aFolders[100], а за ними поток данных к ним uint8_t aData[]. Мне лично, было бы удобнее сделать другой поток - структура и к ней данные: { { folder[0], data[0][] }, { folder[1], data[1][] } ... {folder[n], data[n][]} }. И к теме использования С++, то я бы сделал какой-нибудь контейнер (на основе стандартного) и перегрузил оператор [].