Что такое сигнал "FPE_FLTSUB: индекс вне диапазона"?

В sys/signal.h, один из возможных кодов для SIGFPE это FPE_FLTSUB для которого комментарий просто говорит "индекс вне диапазона -NOTIMP". Я на OS X 10.9, но, похоже, в glibc.

Это не одно из стандартных исключений IEEE, так что же и когда оно возникает?

1 ответ

FreeBSD генерирует этот код с SIGFPE когда х86 BOUND Инструкция обнаруживает индекс массива вне границ. Похоже, Linux генерирует SIGSEGV вместо.

Это не особенно важно, так как BOUND инструкции лучше избегать. Он недоступен в 64-битном режиме, и на большинстве современных процессоров он очень медленный, даже если индекс не выходит за пределы.

Другие вопросы по тегам