AP
Size: a a a
AP
CD
AP
AP
CD
ПК
CD
AP
AT
ПК
ПК
CD
AT
ПК
AT
read(socket, ...);
?ПК
read(socket, ...);
?ПК
m
struct POD { ... };2) Если да, будет ли валиден код выполняющий scramble на уровне байтов для живого объекта?
std::array<std::byte, N> data = get_random_data();
POD* p = new(data.data()) POD;
// use p
struct POD { ... };Я не вижу противоречий со стандартом в обоих случаях. Ни life time, ни strict aliasing вроде не нарушаются. То что объект trivial и standard layout кажется влияет только на первый пример, где от этого зависит будет ли new что-либо делать.
POD pod{};
std::byte* p = reinteret_cast<std::byte*>(&pod);
scrambe(p, sizeof(POD));
// use pod
std::vector<int> v;Мои предположения:
std::byte* p = reinteret_cast<std::byte*>(&v);
scrambe(p, sizeof(v));
MM
ПК