[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:24365] struct のアライメント



大槻です。

gccを使ってプログラムを作成しています。
次のような構造体をでデータをアクセスすると。

typedef struct {
	char	chA;
	union {
		char	chB[256];
		int	nA;
	} uni;
} DATA;
.....

DATA	*a;
......

printf("a            = %x\n",a);
printf("a->uni.chB   = %x\n",a->uni.chB);
printf("sizeof(DATA) = %d\n",sizeof(DATA));
.......
a            = 400f3000
a->uni.chB   = 400f3004
sizeof(DATA) = 260

となってしまいchAとchBの間に3バイト余分な領域が出来てしまいます。

構造体メンバのアライメントを1バイトにしなければならないのは分かるのです
がmanでgccを見ても分かりませんでした。

どなたかgccのオプションを教えて頂けないでしょうか。
よろしくお願いします。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/  Yasuhiro Ootuki(大槻恭裕)            _/_/
_/_/  E-mail:otuki@xxxxxxxxxx              _/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/