Если POD обернут внутри класса, дает ли он тот же эффект? - PullRequest
3 голосов
/ 28 июня 2011

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

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

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

Ответы [ 2 ]

4 голосов
/ 28 июня 2011

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

2 голосов
/ 28 июня 2011

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

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

// Restore
#pragma pack()
...