gpt4 book ai didi

c++ - 使用结构化异常处理 (SEH) 的后果?

转载 作者:太空狗 更新时间:2023-10-29 21:50:53 24 4
gpt4 key购买 nike

我看到 Doug Harrison 很好地说明了使用(即捕获)结构化异常的“错误”(参见 question #3)。但是还有什么其他后果呢?例如,如果我有几个使用/eha 编译的项目,与其他使用/ehs 编译的项目混合在一起,会发生什么情况?库彼此链接(编译时或运行时)时是否存在问题?

但这只是一个例子。可能还有哪些其他问题?

最佳答案

/EHa 禁用优化。在/EHs 生效的情况下,如果编译器可以确保包装在 try {} 中的代码从未抛出任何 C++ 异常,则它可以忽略异常过滤器。这是 x86 和 x64 上的小空间优化,x86 上非常小的时间优化。问题是,如果您捕获非 C++ 异常,则需要这些过滤器。结果是,当捕获到此类异常时,堆栈将展开, C++ 对象的析构函数将被调用。不好,/EHa 避免它。

混合不会导致链接器问题。它导致了上述问题。

是的,/EHa 也让 catch(...) 做了一件很蠢的事,它真的捕获了一切。虽然那艘沉船在不久前航行过,但 Pokemon C++ 异常处理也是一个坏主意。

关于c++ - 使用结构化异常处理 (SEH) 的后果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5053552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com