在Windows 64,假设有三个函数调用链:JIT编译器和异常处理
function A, written in C++
function B, generated by a JIT compiler
function C, written in C++
A调用B中调用C,则C抛出由A,B捕获的异常仅仅是直在线代码;它从不抛出或捕获任何异常,也不包含任何析构函数。
http://msdn.microsoft.com/en-us/library/ms235286(v=vs.80).aspx说B必须保持堆栈对齐到16字节,这很好。它还表示B必须提供展开数据,但不清楚这些数据应包含哪些内容或如何提供。
在这种情况下B则不实际上做任何平仓,不是还得有一个空平仓的数据块,或者你可以忽略这一点,有默默的异常传递乙级以上?
也相关,http://blogs.msdn.com/b/oldnewthing/archive/2012/09/10/10347674.aspx – Hasturkun 2013-03-14 11:04:21