можно ли писать такой код:
uint8_t a[SOME_COUNT];
int main()
{
uint64_t *t = (uint64_t *)a; // c-style я знаю
/* some code*/
}
указатель на 8байтный (64-битный) значение может указывать на ячейку памяти не кратное 8?
указывать может, но формально это undefined behavior. по стандарту, несвязанные типы указателей можно кастовать только к char*.
логически объясняется тем, что это мешает оптимизиациям и на некоторых платформах могут возникать проблемы при доступе к невыровненным данным.
но т.к. подобного кода написано достаточно много, то например в gcc есть параметр -fno-strict-aliasing
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости