- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我发布了 question关于验证指针的可访问性。结论是要么使用 IsBadReadPtr 检查指针,要么使用 SEH 捕获异常(最好两者都不使用,并调试应用程序,但这不是这里的问题)。
IsBadReadPtr 被认为是错误的,因为除其他原因外,它会尝试读取指针,并会捕获任何异常。它可能 catch a stack guard page exception ,从而防止它到达内存管理器,内存管理器应该扩大堆栈。
如果我使用 SEH 并且只捕获 EXCEPTION_ACCESS_VIOLATION 异常,这会产生同样的问题吗?
另一件事:使用 SEH 的含义是什么? This文章建议“编译器无法在受 SEH 保护的代码中执行流分析”。如果我在 __try block 中调用一个函数怎么样?编译器会不会根本不优化被调用的函数?
最佳答案
If I use SEH and catch only EXCEPTION_ ACCESS_VIOLATION exceptions, would this create the same problem?
我觉得可以。解决方法可能是在开始调用 IsBadReadPtr 之前探测您知道和关心的任何线程的堆栈(通过“探测堆栈”我的意思是故意触摸堆栈中的每个内存页面,以确保每个页面是预先分配的)。
Would the compiler not optimize the called function at all?
如果函数未内联,我希望编译器应用通常的优化(函数的优化不会受到函数调用位置的影响)。
关于c - SEH、访问冲突和堆栈保护页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/993551/
我最近读了一些关于异常处理和 .Net 框架的书,这似乎让我在开始时更加困惑。 在 CLR 中通过 C# 第四次添加我读到: Also, the .NET Framework exception-ha
我抓了一些 code from internet ,应该用 SEH 处理异常, ASSUME FS:NOTHING PUSH OFFSET Handler PUSH FS:[0]
信息 我的 C++ 程序没有整个程序优化,具有多字节字符集,并启用了带有 SEH 异常的 C++ 异常 (/EHa)。 以下代码读取信息,然后在简单的数学方程中使用读取的信息来确定结果。 问题 这是所
我发布了 question关于验证指针的可访问性。结论是要么使用 IsBadReadPtr 检查指针,要么使用 SEH 捕获异常(最好两者都不使用,并调试应用程序,但这不是这里的问题)。 IsBadR
我创建了一个内存管理器,它分配由两个页面包围的内存,并带有 PAGE_NOACCESS 保护。我调用了一个在 SEH block 中使用此内存的函数,并捕获了此 block 中发生的 ACCESS_V
class seh_exception : public std::exception { public: seh_exception(UINT se_code, PEXCEPTION_P
我正在编写一个小型实用程序(VC 2010,无 clr),它使用第 3 方库执行一项简单的任务(光栅化)。后来的实用程序将被更大的应用程序使用。有时,该实用程序会因第 3 方库中的某些堆损坏而崩溃。没
我看到 Doug Harrison 很好地说明了使用(即捕获)结构化异常的“错误”(参见 question #3)。但是还有什么其他后果呢?例如,如果我有几个使用/eha 编译的项目,与其他使用/eh
我知道总体概述:http://msdn.microsoft.com/en-us/library/dn743843.aspx ;关于 win32 和 win64 的异常机制有很多可用的信息,但 ARM
我读到的一些关于 SEH(结构化异常处理)的文章/答案认为它是“异步的”。 据我了解,这些异常的整个处理部分发生在引发它们的线程上(在 CPU 级别)。基本上,一旦发生异常,执行就会“跳转”到在当前线
我读到的一些关于 SEH(结构化异常处理)的文章/答案认为它是“异步的”。 据我了解,这些异常的整个处理部分发生在引发它们的线程上(在 CPU 级别)。基本上,一旦发生异常,执行就会“跳转”到在当前线
我正在编写一些代码来处理 Windows 结构化异常(在我的例子中使用 _set_se_translator() 将它们转换为 C++ 异常)。 让我担心的是在异常发生时我得到的异常信息中大量使用指针
我完全不熟悉c/c++。我需要编译一个小程序来做一些分析。 这是程序 #include #include #include //#include #include int ExceptionHan
我在 StackOverflow 和 CodeProject.net 中阅读了很多关于 SEH 异常 的文章。 在我的 C++ 程序中实现了 SEH 异常 处理后,我受到了堆栈溢出异常的影响,而我的软
我正在读这个article关于 Windows 上的 SEH。这是 myseh.cpp 的源代码 我调试了 myseh.cpp。我分别在第 24 行的 printf("Hello from an ex
我正在用 SEH 做一些实验。在我的代码中,我在 __try 子句中编写了导致 block 的错误,并在 __except() 中编写了处理程序。 __try{ Test *pTest = 0; in
最近,我一直试图让 SEH 异常处理与 MCJIT 一起在 LLVM (3.8.1) 中工作。到目前为止没有任何运气。 从我从网站( http://llvm.org/docs/ExceptionHan
我正在研究原生纤程/协程实现——相当标准,为每个纤程分配一个单独的堆栈,为了切换上下文,寄存器被推送到源上下文堆栈上并从目标堆栈中弹出。它运作良好,但现在我遇到了一个小问题: 我需要 SEH 在光纤中
我正在使用 Google C++ Test Framework 编写一些测试代码忘记初始化某个对象 myObj。这会导致以下错误。 unknown file: error: SEH exception
我目前正在阅读有关结构化异常处理 (SEH) 机制的资料,并在 C++ 中做一些练习。 我不明白的一件事是 - 在excpt.h 文件中有两个重要的定义“groups”: EXCEPTION_DISP
我是一名优秀的程序员,十分优秀!