Какая типичная ошибка при работе с memory-mapped registers и как ее избежать?
Что хотят услышать интервьюеры:
Частая ошибка: использовать volatile как замену atomic/synchronization или игнорировать alignment/endianness.
Ответ:
Как избежать: явно определить контракт: кто владеет объектом, кто освобождает ресурс, что происходит при ошибке, какие инварианты должны сохраняться.
На собеседовании: полезно назвать симптом — segfault, leak, UB, data race, deadlock, ABI break или деградация производительности.
volatile uint32_t* reg = (uint32_t*)0x40000000;