私は構造を持っているとしましょう:
struct myStruct
{
int a;
short b;
char c;
};
Windows では、 MSDN は、 4 バイト、2 バイト、および 1 バイトを取ると述べてい ます。これは合計で最大 7 バイトです。intshortchar
ほとんどのコンパイラは、アラインメントを改善するために不特定のバイト数で構造体をパディングすることを理解しています。したがって、このプログラムを実行すると、
#include <stdio.h>
int main(void) {
printf("%d\n", sizeof(struct myStruct));
return 0;
}
の出力が得られます8。これは、1 バイトがパディングされたことを意味します。
コード内のサイズを保守的に決定できる方法はありますかstruct(個々の s を合計する以外にsizeof)?
後で構造を変更して約 15 個の要素を含める必要があり、さらに 5 個の構造を追加すると、すべてstruct sizeofの が変更されて混乱が生じるためです。