以下是两种不同的解释:
char c; // 1
struct MyChar { char c; }; // 2
如果我new MyChar[100]
,它会在所有平台上分配100个字节吗?添加非virtual
构造函数/析构函数和/或operator
会对MyChar
的大小产生影响吗?
答案 0 :(得分:4)
MyChar
在c
之后可能有未命名的填充字节,所以不,不能保证sizeof(MyChar)
是1
。
答案 1 :(得分:2)
在MSVC上,您可以使用:
#pragma pack(1)
struct MyChar
{
char c;
};
// Restore
#pragma pack()