можно ли писать такой код:
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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть указатель на член, нужно получить числовое представление этого адреса, иными словами смещениеВ коде вот так:
Ранее пользовался Linux/Ubuntu и не было ни каких проблем с отладкой (использовался gcc + gdb)Сейчас перешел на MacOS и появилась большая проблема
Не могу понять в чём ошибка пробовал различные способы менял структуру нечего не помогает,после моих попыток я смог только задержать ошибку...