В общем, я знаю, что экземпляр структуры будет иметь выравнивание самого широкого скалярного члена. Я объявил структуру, имеющую член типа данных long double
.
struct try
{
char a;
long double b;
};
struct try obj;
Когда я попытался проверить sizeof(obj)
, он выглядит как 16
. Мой компилятор принимает long double
как 12
байтов. Поэтому я не могу понять, как именно здесь выполняется заполнение и как происходит выравнивание в структуре. Я предполагал, что выравнивание будет выполнено на основе long double
, поскольку это самый широкий скалярный член. Таким образом, для char должно быть заполнено байтами 11
, а размер структурной переменной должен быть равен 24
, а вывод - 16
. Так что именно здесь происходит? Я работаю на 64 bit
процессоре.