以下是代码(msvc 2012,32位):
#include <iostream>
int main()
{
double d;
std::cout<<_alignof(double)<<std::endl;
std::cout<<((size_t)(&d)) % _alignof(double)<<std::endl;
return 0;
}
输出有时候是:
8
0
但有时它会是这样:
8
4
alignof(double)=8并不意味着double的对齐方式将是8吗?
我看过: http://msdn.microsoft.com/en-us/library/aa290049(v=vs.71).aspx 但我不确定是否理解...
alignof
,但是你的代码中却写成了_alignof
(而且链接的网站又讲到了另外一个__alignof
),我们现在讨论的是哪个?我可以想象它们之间可能存在微妙的差异。 - PlasmaHHand esp,0FFFFFFF8h
时,您就知道已经达到了目标。 - Hans Passant