首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SEH,访问冲突和堆栈保护页面

SEH,访问冲突和堆栈保护页面
EN

Stack Overflow用户
提问于 2009-06-14 19:27:48
回答 1查看 2.1K关注 0票数 1

我发布了一个关于验证指针可访问性的问题。其结论是要么使用IsBadReadPtr检查指针,要么使用SEH捕获异常(最好使用两者都不使用,并调试应用程序,但这不是问题所在)。

据说IsBadReadPtr是坏的,因为它会尝试读取指针,并捕获任何异常。它可能会捕获堆栈保护页异常,从而阻止它到达本应扩展堆栈的内存管理器。

如果我使用SEH而只捕获EXCEPTION_ ACCESS_VIOLATION异常,这会造成同样的问题吗?

另一件事:使用SEH意味着什么?文章指出,“编译器不能在受SEH保护的代码中执行流分析”。如果我在__try块中调用一个函数,怎么样?编译器难道根本不优化被调用的函数吗?

EN

回答 1

Stack Overflow用户

发布于 2009-06-14 19:36:25

如果我使用SEH而只捕获EXCEPTION_ ACCESS_VIOLATION异常,这会造成同样的问题吗?

我想会的。解决方法可能是在开始调用IsBadReadPtr之前探测您所知道和关心的任何线程的堆栈(“探测堆栈”,我的意思是有意地触摸堆栈中的每个内存页,以确保每个页面都预先分配)。

编译器难道根本不优化被调用的函数吗?

如果函数没有内联,我希望编译器应用通常的优化(函数的优化不会受到函数从哪里调用的影响)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/993551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档