Что делает метод setCleanup на LandingPad? - PullRequest
0 голосов
/ 10 апреля 2019

Что на самом деле делает setCleanUp (true) при применении к посадочной площадке и каков эффект от того, что он этого не делает.

У меня есть этот код

LLVM.SetCleanup(pad, true);

(это LLVMSharp), и это прекрасно работает для перехвата и обработки исключений, но если я удаляю его, код все равно работает нормально, так что же это на самом деле делает и каков эффект , а не делает Это? Документы LLVM просто говорят Indicate that this landingpad instruction is a cleanup, но не каков его эффект. Или, другими словами, что является примером посадочной площадки, которая не является очисткой?

1 Ответ

0 голосов
/ 10 апреля 2019

Очистка посадочных площадок может использоваться для таких вещей, как вызов деструкторов при разматывании стека.Как правило, пункты очистки всегда выполняются, тогда как неочищенные посадочные площадки будут использоваться для фактически обработки исключений и вводятся только в том случае, если тип исключения соответствует типу, указанному в посадкеpad.

То, что фактически делают пункты очистки, будет полностью зависеть от целевого языка.

Подробнее об этом см. в этом документе https://llvm.org/docs/ExceptionHandling.html#cleanups

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...