Поделиться через


Ошибки выравнивания

Обработчик сбоя выравнивания системы по умолчанию отключен в системах на основе Itanium. Таким образом, любой несравнимый доступ к данным создает исключение, которое не будет автоматически исправлено системой, если приложение не перехватит исключение в обработчике исключений на основе кадров. Чтобы включить системный обработчик ошибок выравнивания, вызовите функцию SetErrorMode с SEM_NOALIGNMENTFAULTEXCEPT. Однако обратите внимание, что процессы могут столкнуться с серьезным снижением производительности, если включен обработчик сбоя выравнивания системы и процесс создает ошибки выравнивания.

Если отладчик WinDbg установлен в качестве системного отладчика, WinDbg будет автоматически запущен, если какой-либо процесс в системе создает необработанное исключение. Если в качестве системного отладчика не установлен отладчик, система отображает диалоговое окно с сообщением о том, что приложение столкнулось с ошибкой, и предоставляет возможность сообщить о проблеме в корпорацию Майкрософт.

В системах x64 и ARM64 любые ошибки выравнивания обрабатываются сочетанием оборудования и программного обеспечения. Для обеспечения оптимальной производительности весь доступ к памяти должен быть правильно выровнен. Кроме того, следует избегать несровненного доступа к переменным в ARM64, так как эти операции не являются атомарными.