LandingPad 上的 setCleanup 方法有什么作用?
What does the setCleanup method do on a LandingPad?
将 setCleanUp(true) 应用于着陆垫时实际会做什么,不这样做会产生什么影响。
我有这个代码
LLVM.SetCleanup(pad, true);
(即 LLVMSharp)这对于捕获和处理异常非常有效,但是如果我删除它,代码仍然可以正常工作,那么这实际上做了什么以及 not 的效果是什么在干嘛? LLVM 文档只是说 Indicate that this landingpad instruction is a cleanup
但没有说明它的作用是什么。或者换句话说,不是清理的着陆台示例是什么?
清理着陆台可用于在展开堆栈时调用析构函数等操作。通常,清除子句 always 执行,而非清除着陆台将用于实际 handling 异常,并且仅在异常匹配着陆台指定的类型。
清除子句的实际作用完全取决于目标语言。
有关更多上下文,请参阅此文档https://llvm.org/docs/ExceptionHandling.html#cleanups
将 setCleanUp(true) 应用于着陆垫时实际会做什么,不这样做会产生什么影响。
我有这个代码
LLVM.SetCleanup(pad, true);
(即 LLVMSharp)这对于捕获和处理异常非常有效,但是如果我删除它,代码仍然可以正常工作,那么这实际上做了什么以及 not 的效果是什么在干嘛? LLVM 文档只是说 Indicate that this landingpad instruction is a cleanup
但没有说明它的作用是什么。或者换句话说,不是清理的着陆台示例是什么?
清理着陆台可用于在展开堆栈时调用析构函数等操作。通常,清除子句 always 执行,而非清除着陆台将用于实际 handling 异常,并且仅在异常匹配着陆台指定的类型。
清除子句的实际作用完全取决于目标语言。
有关更多上下文,请参阅此文档https://llvm.org/docs/ExceptionHandling.html#cleanups