私の知る限り、デフォルトでは4バイトのアラインメントが行われます。いう
typedef struct
{
int data7;
unsigned char data8;
//3 -bytes will be added here.
}Sample1;
だからsizeof(Sample1)
8になります。
しかし、次の構造の場合、なぜパディングが発生しないのでしょうか。
typedef struct
{
unsigned char data1;
unsigned char data2;
unsigned char data3;
unsigned char data4;
unsigned char data5;
unsigned char data6;
}Sample2;
ただし、sizeof(Sample2)は6のみです。このSample2は4バイトに整列された構造ではありませんか?
編集::
ウィキによる
データアライメントとは、ワードサイズの倍数に等しいメモリオフセットにデータを配置することを意味します。これにより、CPUがメモリを処理する方法により、システムのパフォーマンスが向上します。
しかし、Sample2のメンバーは2の倍数で整列されませんよね??
ありがとう。