Я опубликовал вопрос о проверке доступности указателя. Был сделан вывод: либо использовать IsBadReadPtr для проверки указателя, либо SEH, чтобы перехватить исключение (и желательно не использовать ни то, ни другое и отладить приложение, но здесь это не проблема).
IsBadReadPtr считается плохим, потому что, в частности, он попытается прочитать указатель и перехватит любое исключение. Он может перехватить исключение страницы защиты стека и, таким образом, предотвратить доступ к диспетчеру памяти, который должен был увеличить стек.
Если я использую SEH и ловлю только исключения EXCEPTION_ ACCESS_VIOLATION, это создаст такую же проблему?
Другое дело: каковы последствия использования SEH?
Эта статья предполагает, что «компилятор не может выполнить анализ потока в коде, защищенном SEH». Как насчет того, чтобы вызвать функцию внутри блока __try? Разве компилятор вообще не оптимизирует вызываемую функцию?