Size: a a a

2020 June 08

R

Ruben in pro.cxx
сначала выделить отдельно память под структуру, присвоить полям значения
источник

R

Ruben in pro.cxx
а потом сериализовать в буфер
источник

R

Ruben in pro.cxx
а тут сразу раз — и в буфер
источник

CD

Constantine Drozdov in pro.cxx
Ilia Zviagin
Расклад байт и битов в структуре с битовыми полями не  определен,  так что записать можно, но что будет - неизвестно. На одной платформе ещё может будет работать, на разных - нет
Это точная инфа? Не представляю реального С++ компилятора, где это так
источник

IZ

Ilia Zviagin in pro.cxx
Ruben
ну расклад битов для целевой архитектуры еще выяснить можно, пол беды, если других неприятностей не грозит
Вот как раз именно сейчас я страдаю, перерабатывая старый  проект, где какой-то судак написал сериализацию через read/write ...
источник

R

Ruben in pro.cxx
когда ресурсов мало, приходится экономить. Для десктопа я бы так писать не стал
источник

IZ

Ilia Zviagin in pro.cxx
Ruben
потом что тогда придется где-то промежуточно хранить данные, а это расход памяти...
Чего?
источник

R

Ruben in pro.cxx
если делать сериализацию через отдельные методы структуры, то нужно будет создавать объект самой структуры. В поля записывать данные. Затем при сериализации переносить это в буфер. Так?
источник

R

Ruben in pro.cxx
вроде как двойной расход памяти получается
источник

R

Ruben in pro.cxx
и буфер, и еще саму структуру отдельно создать объектом
источник

R

Ruben in pro.cxx
а когда мапишь структуру на буфер — данные сразу идут в буфер, без дополнительного выделения памяти для отдельной структуры
источник

IZ

Ilia Zviagin in pro.cxx
Ruben
если делать сериализацию через отдельные методы структуры, то нужно будет создавать объект самой структуры. В поля записывать данные. Затем при сериализации переносить это в буфер. Так?
Не понял. Он же есть уже у тебя...
источник

IZ

Ilia Zviagin in pro.cxx
Ruben
а когда мапишь структуру на буфер — данные сразу идут в буфер, без дополнительного выделения памяти для отдельной структуры
Ну ок, если тебе так не нравится, что память два раза - выкини буфер!
источник

R

Ruben in pro.cxx
метод 1:
char buffer[X];
auto packet = static_cast<MyStruct_t *>(buffer);
.....
метод 2 (я правильно понял что ты предлагаешь делать так?):
char buffer[X];
MyStruct packet;
.....
packet.serialize(buffer);
источник

IZ

Ilia Zviagin in pro.cxx
Ruben
метод 1:
char buffer[X];
auto packet = static_cast<MyStruct_t *>(buffer);
.....
метод 2 (я правильно понял что ты предлагаешь делать так?):
char buffer[X];
MyStruct packet;
.....
packet.serialize(buffer);
Как бы да, но сериализовать можно прямо в поток, сетевой или файловый
источник

R

Ruben in pro.cxx
иногда бывает нужно еще сохранять данные в кольцевом буфере опять же, для повторной отправки например... Тут сразу мапишь структуру на участок буфера, записываешь все, и идешь дальше.
источник

R

Ruben in pro.cxx
программирование эконом-класса)
источник

AN

Alexander N in pro.cxx
Ilia Zviagin
Вот как раз именно сейчас я страдаю, перерабатывая старый  проект, где какой-то судак написал сериализацию через read/write ...
Поди структуру тупо писал как есть ещё?))
источник

IZ

Ilia Zviagin in pro.cxx
Ruben
иногда бывает нужно еще сохранять данные в кольцевом буфере опять же, для повторной отправки например... Тут сразу мапишь структуру на участок буфера, записываешь все, и идешь дальше.
Далеко пойдешь!
Ну ладно. Стровстрап тебе судья...
источник

IA

Igor Akhmetov in pro.cxx
Constantine Drozdov
Это точная инфа? Не представляю реального С++ компилятора, где это так
Я думаю Илья имеет ввиду что разные компиляторы по-разному пакуют одинаковые битфилды, это точная инфа.
источник