История изменений
Исправление red75prim, (текущая версия) :
Это генерирует одну инструкцию, но это UB по стандарту, хотя по факту работать будет…
Наличие UB зависит от того на что этот uint8_t*
указывает.
Указатель на переменную типа uint8_t на стеке? Несомненный UB независимо от выравнивания (доступ к объекту по указателю не совпадающему с эффективным типом объекта)
Указатель на аллоцированную память? Зависит от того что в этой аллоцированной памяти хранится. Если эффективный тип объекта по адресу в указателе это uint32_t
, то можно читать писать без проблем. А что там хранится определяется первой записью в эту область памяти.
Указатель на 32-х битный аппаратный регистр отмапленный в этот адрес? По-моему, UB.
Исправление red75prim, :
Это генерирует одну инструкцию, но это UB по стандарту, хотя по факту работать будет…
Наличие UB зависит от того на что этот uint8_t*
указывает.
Указатель на переменную типа uint8_t на стеке? Несомненный UB независимо от выравнивания (доступ к объекту по указателю не совпадающему с эффективным типом объекта)
Указатель на аллоцированную память? Зависит от того что в этой аллоцированной памяти хранится. Если эффективный тип объекта по адресу в указателе это uint32_t
, то можно читать писать без проблем. А что там хранится определяется первой записью в эту область памяти.
Указатель на аппаратный регистр отмапленный в этот адрес? По-моему, UB.
Исходная версия red75prim, :
Это генерирует одну инструкцию, но это UB по стандарту, хотя по факту работать будет…
Наличие UB зависит от того на что этот uint8_t*
указывает.
Указатель на переменную типа uint8_t на стеке? Несомненный UB (доступ к объекту по указателю не совпадающему с эффективным типом объекта)
Указатель на аллоцированную память? Зависит от того что в этой аллоцированной памяти хранится. Если эффективный тип объекта по адресу в указателе это uint32_t
, то можно читать писать без проблем. А что там хранится определяется первой записью в эту область памяти.
Указатель на аппаратный регистр отмапленный в этот адрес? По-моему, UB.