Я тестировал выравнивание классов и обнаружил странное поведение. Я протестировал его с настройкой компилятора VS2012 4
и 8
выравнивания байтов, но в каждом случае вывод одинаковый.
class Alignemnt{
public:
Alignemnt():a(){}
int a;
};
class Alignemnt_1{
public:
int a;
char array[2];
};
class Alignemnt_2{
public:
int a;
char array[2];
int x;
};
std::cout << "Sizeof(Alignemnt) :" <<sizeof(Alignemnt) << std::endl;
std::cout << "Sizeof(Alignemnt_1) :" <<sizeof(Alignemnt_1) << std::endl;
std::cout << "Sizeof(Alignemnt_2) :" <<sizeof(Alignemnt_2) << std::endl;
Каждый раз вывод:
Sizeof(Alignemnt) : 4
Sizeof(Alignemnt_1) : 8
Sizeof(Alignemnt_2) : 12
Я думаю, размер Alignemnt_2 должен быть 16 байт.
struct
вместоclass
по причинам тестирования, чтобы сэкономить ваше время и не печатать ключевое словоpublic
- person borisbn   schedule 29.01.2015