【发布时间】:2021-07-29 01:50:09
【问题描述】:
#include <iostream>
using namespace std;
int main()
{
alignas(double) unsigned char c[1024]; // array of characters, suitably aligned for doubles
alignas(16) char d[100]; // align on 16 byte boundary
cout<<sizeof(c)<<endl;
cout<<sizeof(d)<<endl;
constexpr int n = alignof(int); // ints are aligned on n byte boundarie
cout<<n<<endl;
}
这里是代码,对于alignas(double) unsigned char c[1024];,意思是c应该与double对齐,double是8字节。
所以我认为sizeof(c)应该是1024*8字节,但是控制台输出是1024。
所以我很困惑。谁能告诉我原因?
【问题讨论】:
-
你如何计算 1024*8 ? (对齐是针对数组开始的,而不是针对每个单独的数组成员)