Добрый день. Столкнулся с непонятной проблемой - пример всё поясняет:
#include <iostream>
struct NN
{
double dd;
char i;
};
int main()
{
NN ar[2];
std::cout << "alignof double(в норме 8) == " << alignof(double) << '\n';
std::cout << "alignof NN(в норме 8) == " << alignof(NN) << '\n';
std::cout << "sizeof NN(в норме 16) == " << sizeof(NN) << '\n';
std::cout << "array difference(в норме 16) == " << (int)&ar[1] - (int)&ar[0] << std::endl;
return 0;
}
$ g++ --version
g++ (Debian 4.9.2-16) 4.9.2
$ ./a.out
alignof double(в норме 8) == 8
alignof NN(в норме 8) == 4
sizeof NN(в норме 16) == 12
array difference(в норме 16) == 12