:sizeofとunsigned char配列エラー? (C/C++)私は、この構造を書かれている
struct bmpheader {
unsigned char magic[2];
unsigned int fsize;
unsigned int unused;
unsigned int pixdata_offset;
unsigned int headersize;
unsigned int width;
unsigned int height;
unsigned short planes_color;
unsigned short bpp;
unsigned int compression;
unsigned int sizeofpix;
unsigned int resolutionx;
unsigned int resolutiony;
unsigned int colors;
unsigned int imp_colors;
};
と私ははsizeof機能に問題があります。私の指でカウントしているとき、そのたびに私のために54バイト。 sizeof関数は毎回私に56を与えます。なぜですか?問題は、私は魔法[2]配列を削除すると、unsigned char配列で、sizeofは52ですか? sizeof(header.magic)は2と表示されています。私が知っている限り、unsigned charは1バイト型ですか?
返信いただきありがとうございます。
マルチン
あなたの指で54までカウントできますか? –
コンパイラは、構造体のレイアウトにパディングを挿入して、フィールドの整列性を向上させます。このパディングは、2つの魔法の文字と最初のintの間にあり、intがすべて4バイトの境界になるようにします。 –
@SethCarnegie、私は自分の指で1024までカウントすることができます – Lol4t0