我一直在尝试了解 TR1 的附加功能,即对齐存储。在阅读以下文档N2165、N3190和N2140时,我一生都看不到清楚描述所使用内存的堆栈或堆性质的声明。
我查看了 msvc2010、boost 和 gcc 提供的实现,它们都提供了一个以使用联合为中心的基于堆栈的解决方案。
简而言之:
是否定义了对齐存储实现使用的内存类型(堆栈或堆),或者它总是意味着基于堆栈?
并且,定义/确定它的具体文件是什么?
注意:在 MSVC10 中,以下是对齐存储类型的定义,在这种情况下,如果对齐存储是自动变量,则在堆栈上创建数据(_Val,_Pad):
template<class _Ty, size_t _Len>
union _Align_type
{
// union with size _Len bytes and alignment of _Ty
_Ty _Val;
char _Pad[_Len];
};
注意:这不是一个微不足道的问题。请在发布答案之前尝试并理解问题。