Если у меня есть такой объект, как этот:
struct {
uint32_t n;
uint8_t c;
} blob {};
тогда будет 3 "заполненных" байта.
Доступен ли UB к заполненным байтам? Например:
uint8_t * data = reinterpret_cast<uint8_t*>(&blob);
std::cout << data[4] << data[5] << data[6] << data[7];
Сначала я предположил, что это, вероятно, будет UB, но если это правда, то memcpy также будет UB:
memcpy(buf, &blob, sizeof(blob));
Мои конкретные вопросы:
- Доступно ли UB для доступа к заполненным байтам?
- Если нет, значит ли это, что значения также определены?