Если POD находится внутри класса, дает ли он тот же эффект?

Ниже приведены две разные интерпретации:

char c;  // 1
struct MyChar { char c; };  // 2

Если я сделаю new MyChar[100]Будет ли он выделять 100 байт на всей платформе? Добавление неvirtual конструктор / деструктор и / или operators окажет какое-либо влияние на размер MyChar?

2 ответа

Решение

MyChar может иметь безымянные байты заполнения после cтак что нет, не гарантируется, что sizeof(MyChar) является 1,

На MSVC вы можете использовать:

#pragma pack(1)
struct MyChar 
{ 
    char c; 
}; 

// Restore
#pragma pack()
Другие вопросы по тегам