Что на самом деле делает setCleanUp(true) при применении к посадочной площадке и каков эффект, если этого не делать.
у меня есть этот код
LLVM.SetCleanup(pad, true);
(который является LLVMSharp), и это отлично работает для перехвата и обработки исключений, но если я удалю его, код все еще будет работать нормально, так что же это на самом деле делает и каков эффект от нет? Документы LLVM просто говорят Indicate that this landingpad instruction is a cleanup
, но не говорят о том, каков его эффект. Или, другими словами, какой пример посадочной площадки не является очисткой?
Целевые площадки очистки можно использовать для таких вещей, как вызов деструкторов при раскручивании стека. Как правило, предложения очистки выполняются всегда, тогда как посадочные площадки без очистки будут использоваться для реальных исключений умение обращаться и вводятся только в том случае, если тип исключения соответствует типу, указанному посадочной площадкой.
То, что на самом деле делают предложения очистки, будет полностью зависеть от целевого языка.
Подробнее об этом см. в этом документе https://llvm.org/docs/ExceptionHandling.html#cleanups
Спасибо за акцент в вашем ответе, теперь я понял.