Диалоговое окно DEP обычно отображается только при попытке выполнить код из региона, который вы не помечаете как исполняемый. Это может быть вызвано тем, что в используемой вами библиотеке, например, «громы». ATL оконное. Эта проблема исправлена в ATL 8.0.
Ошибка очистки стека - например, переполнение буфера - также может вызывать эту проблему, устанавливая адрес возврата в местоположение, которое не является исполняемым. Это может вызвать не нарушение прав доступа, а странное поведение, если DEP отключен для процесса или недоступен на оборудовании.
Это также может произойти, если вы сгенерируете исключение C ++ или вызовете исключение SEH, и ваши обработчики структурированных исключений были перегружены переполнением буфера.