在C++中有 try..throw..catch,當它執(zhí)行這種結(jié)構(gòu)時瓷叫,它需要保存現(xiàn)場還原現(xiàn)場拴驮,而 sjlj, seh, dwarf 正是實現(xiàn)這類過程的三種方式。
sjlj 全稱是 SetJump LongJump惫确,前者設(shè)還原點,后者跳到還原點。
seh 是 Borland 公司的改化,微軟買了其專利使用權(quán)掩蛤,它利用了FS段寄存器,將還原點壓入陈肛,收到異常時彈出揍鸟。
相較而言,sjlj 是 C 標準庫就有的東西句旱,seh 在 2014 年前是有專利的阳藻,從性能上說 seh 比 sjlj 快。
dwarf 我是在開源平臺 MinGW 見到這名稱谈撒,因為專利原因 MinGW 以前并不支持 seh腥泥,也許是為了保證性能,它又提供了 dwarf 這種方式啃匿。