我有两个不同的数据结构,原则上它们应该具有相同的大小,我想知道为什么它们没有。
struct pix1 {
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char a;
unsigned char y[2];
};
struct pix2 {
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char a;
unsigned short y;
};
然后,我将其中四个像素组合在一起,如下所示:
struct pix4 {
pix1 pixels[4]; // or pix2 pixels[4]
unsigned char mask;
};
...但事实证明,根据 sizeof(pix4),这种分组的大小会发生变化,具体取决于我使用的是 pix1 还是 pix2。单个 sizeof(pix1) == sizeof(pix2),所以我很困惑为什么将四重像素分组会改变大小。我很在意,因为用 short 编写程序比使用 2 个无符号字符更容易,但是每个像素要花费 0.25 个字节。
我不确定这个架构是否特定,因为我没有在其他类型的机器上测试过。可以对齐吗?这是我需要担心的事情,还是我可以继续进行简短的实施?
提前感谢您的帮助。