私はCode :: Blocks IDEをGNU GCCコンパイラで使用しています。C/C++:構造体内のデータをパッキングまたはパディングする
struct test
{
char a;
char e;
char f;
char b;
char d;
};
sizeof(test)
戻り5
。
私はこの答え読み:sizeof(test)
戻り6
または8
ように、どのように Why isn't sizeof for a struct equal to the sum of sizeof of each member?
は、最後のchar
後のパディングがない来ますか? short
とint
などを追加すると、私は一度質問することができるより多くの質問があります。しかし、私はこの質問が今は良いと思う。パディングしないと、プロセッサが構造体を扱いやすくなりますか?
私のワードサイズが4バイトだとします。私は配列 'test stuff [1000]'を持っているとしましょう。私のプロセッサは 'char-char-char-char char-pad-pad-pad'のような個々の' test'を読み込みます。メモリ内の配列をこのようにフォーマットする必要はありませんか? – newprogrammer
@newprogrammerいいえ。配列のメンバー間、構造体のメンバーの間にパディングなしで5000バイトになります。 – asaelr
@newprogrammer:構造体に "単語"がないので、 "単語"に必要な配置は無関係です。 –