原則として同じサイズにする必要がある2つの異なるデータ構造体がありますが、なぜそうしないのか疑問に思っています。
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;
};
次に、これらのピクセルの 4 つをグループ化します。
struct pix4 {
pix1 pixels[4]; // or pix2 pixels[4]
unsigned char mask;
};
...しかし、pix1 と pix2 のどちらを使用するかによって、sizeof(pix4) に従って、このようなグループ化のサイズが変化することがわかりました。個々の sizeof(pix1) == sizeof(pix2) であるため、ピクセルのカルテットをグループ化するとサイズが変わる理由について混乱しています。2 つの unsigned char を使用するよりも short を使用した方がプログラムを作成しやすいので気になりますが、1 ピクセルあたり 0.25 バイトのコストがかかります。
他のタイプのマシンでテストしていないため、このアーキテクチャ固有かどうかはわかりません。それはアライメントでしょうか?これは私が心配する必要があることですか、それとも簡単な実装を進めることができますか?
事前にご協力いただきありがとうございます。