170 похожих чатов

Хм. Вот предположим есть буфер char buf[16]{}; И в нём лежит

два int64_t
Если сделать
std::vector<int64_t> vec;
vec.resize(2);
std::memcpy(vec.data(), buf, 16);
Это будет работать как ожидалось и создаст два инта в соответствии со стрикт алиасингом?..

11 ответов

23 просмотра

сам сейчас с сокетами похоже копирую из потока

Если гарантируешь CHAR_BIT == 8, то не вижу причин, почему нет. Хотя для CHAR_BIT != 8 вряд ли будут доступны int*_t типы. Хотя могут в теории. В общем если сделать s/16/sizeof(int64_t)*2/ будет ближе к истине. :)

Liber-Azerate Автор вопроса
Alexander "Ternvein" Isaev
Если гарантируешь CHAR_BIT == 8, то не вижу причин...

На самом деле у меня гарантированно инты в буфере восьмибитные и это не совсем массив, ну а у себя я как-то гарантирую, что байт восемь бит, да :)

Liber Azerate
На самом деле у меня гарантированно инты в буфере ...

Сами int64_t создаются на resize ещё, и они trivially copyable. Так что мне видится, что всё тут отлично.

я думаю, что да, если 20 стандарт или новее For each operation that is specified as implicitly creating objects, that operation implicitly creates and starts the lifetime of zero or more objects of implicit-lifetime types in its specified region of storage if doing so would result in the program having defined behavior. http://eel.is/c++draft/intro.object#10.sentence-2

Vlad
я думаю, что да, если 20 стандарт или новее For e...

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

Liber-Azerate Автор вопроса
Vlad
я думаю, что да, если 20 стандарт или новее For e...

Да, но тут ведь объекты уже созданы, поэтому должно работать и до С++20, верно?

а что может пойти не так?

Vlad
по идее да

resize при увеличении добавляет default-inserted элементы, что значит allocator_traits::construct, что значит placement-new, что начинает время жизни

Vlad
resize при увеличении добавляет default-inserted э...

Там больше вопросов к буферу, валидно ли в нём присутствие object representation int64_t до 20.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта