以下代码(msvc 2012,32bit):
#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
不对齐(double)= 8意味着双重对齐将是8?
我看过: http://msdn.microsoft.com/en-us/library/aa290049(v=vs.71).aspx 但我不确定我明白......
答案 0 :(得分:0)
那是因为你在堆栈(&amp; d)上获取地址,在程序启动时动态计算起始地址。 _alignof(double)将始终返回8,因为对于基本类型,它与它们的大小相同。