構造体のサイズを求めるにはどうしたらいいですか?

struct a
{
    char *c;
    char b;
};

sizeof(a)とは何ですか?

これは、アーキテクチャや基本データ型の扱い方によって異なります。また、システムが自然な整列を必要とするかどうかにも依存します。

解説 (0)

厳密ではなく構造体のことだと思いますが、32ビットシステムでは、コンパイラが構造体をパディングするかどうかによって、5バイトか8バイトのどちらかになります。

解説 (0)

'strict' ではなく 'struct' で、 'char' ではなく 'char' のことではないかと思います。

サイズは実装に依存します。 ほとんどの 32-bit システムでは、おそらく 5 バイトで、4 バイトがポインタ、1 バイトが char になります。 アライメントは関係ないと思います。 しかし、もし 'c' と 'b' を入れ替えたら、サイズは8バイトになるかもしれません。

OK、試しに(g++ 4.2.3、-gオプション付き)やってみたら、8が出たよ。

解説 (1)