通过Itanium ABI分配的异常内存是否有任何对齐保证?

7
Itanium ABI 规定异常的内存是通过调用 __cxa_allocate_exception(size) 获得的。返回的内存有什么对齐保证?
1个回答

6

第4章第1.2节 明确指出:

展开接口使用指向异常头对象的指针作为表示抛出的异常的方式。通常,完整的异常对象的表示是特定于语言和实现的,但它将以由展开接口理解的标头为前缀,定义如下:

接着是对 struct _Unwind_Exception 的定义,随后是:

_Unwind_Exception 对象必须具有双字对齐。

由于这是一个在整个异常对象之前的前缀,整个内存块都必须具有双字对齐。

可以说,这段文本并没有禁止出现在 _Unwind_Exception 之前 的任意填充,但如果认为是这种情况,那么就不存在任何对齐保证;我选择将其解释为一个轻微的措辞缺陷。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接