以下代码(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 但我不确定我是否理解...
最佳答案
那是因为你获取了堆栈上的地址 (&d),该起始地址是在你的程序启动时动态计算的。 _alignof(double) 将始终返回 8,因为对于基本类型,它与它们的大小相同。
关于c++ - MSVC win32 中的 alignof(double),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20001135/