#include <iostream>
using namespace std;
struct alignas(32) S{
char a;
};
char alignas(4) arr[3];
int main()
{
cout << sizeof(S) << endl; //output 32
cout << sizeof(arr) << endl;//output 3
return 0;
}
为什么数组的输出是3呢?为什么这里的alignas没有影响sizeof,而对struct 又影响了大小呢?
타입 선언에서 alignas를 사용하면 타입 내부의 패딩에 영향을 미치게 되며, 이 패딩 부분도 타입의 크기로 계산됩니다. 크기에 영향을 미칩니다.
alignas가 변수 선언 에 사용되는 경우 런타임에서는 이에 따라 이 변수의 주소를 정렬하기만 하면 됩니다. 크기에는 영향을 주지 않습니다.