【发布时间】:2013-03-02 13:58:33
【问题描述】:
在 Windows x64 上,假设存在三个函数的调用链:
function A, written in C++
function B, generated by a JIT compiler
function C, written in C++
A 调用 B,B 调用 C,然后 C 抛出由 A 捕获的异常。B 只是直线代码;它从不抛出或捕获任何异常,也不包含任何析构函数。
http://msdn.microsoft.com/en-us/library/ms235286(v=vs.80).aspx 说 B 必须保持堆栈对齐到 16 个字节,这很好。它还说必须为 B 提供展开数据,但不清楚这些数据应该包含什么或如何提供。
在这种情况下,B 确实 实际上必须进行任何展开,它是否仍然必须有一个空的展开数据块,或者你可以忽略它并让异常静默传递 B ?
【问题讨论】:
标签: c++ windows exception-handling 64-bit