将setCleanUp(true)应用于着陆垫时的实际作用是什么,不这样做会有什么作用。
我有这个代码
LLVM.SetCleanup(pad, true);
(这是LLVMSharp),对于捕获和处理异常效果很好,但是如果我删除它,代码仍然可以正常工作,所以它实际上是做什么的, not 的作用是什么?正在做? LLVM文档只说Indicate that this landingpad instruction is a cleanup
,但没有说出它的作用。或者换句话说,不是清理的登陆板示例是什么?
答案 0 :(得分:0)
清理栈板可用于展开堆栈时调用析构函数。通常,清理子句总是执行 ,而非清理登陆垫将用于实际的处理异常,并且只有在异常的类型与以下指定的类型匹配时才输入平台。
清除子句的实际作用将完全取决于目标语言。
有关更多背景信息,请参见此文档https://llvm.org/docs/ExceptionHandling.html#cleanups