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