проблему, то придется buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24) (еще зависит от порядка байт, но не суть), однако не будет ли это медленно?
Это зависит от того, как ты получил этот указатель buffer
Если это "голый" буфер - да, поскольку по адресу отсутствует объект такого типа. Можно использовать placement-new с default-инициализацией (без инициализатора) для таких целей.
Вот, например, использование: https://github.com/microsoft/compoundfilereader/blob/master/src/include/compoundfilereader.h#L381 const unsigned char* MiniSectorOffsetToAddress(size_t sector, size_t offset) const …
Если это под конкретную платформу, конкретный компилятор, то MS, как производитель компилятора, умеет эксплуатировать UB, как и в реализации стандартной либы.
Это ты сам смотри, там долго. Если реально буфер ссылается на переменную такого типа, то всё ок, иначе -UB
Обсуждают сегодня