Re: 構造体のメンバの記憶域の順
fj.comp.lang.cの記事<871xve8046.wl@anago2.mas.chi.its.hiroshima-cu.ac.jp>で
fujii@chi.its.hiroshima-cu.ac.jpさんは書きました。
> 構造体のメンバの記憶域は並べられた順に割り当てらることとなっていますが、
> これには何か理由がありますか。
struct foo {
int a;
int b;
int c;
char s[1];
};
のように構造体を宣言しておいて、任意の長さの領域を
malloc()してからstruct foo *にキャストして使うなん
てことをむかしのプログラムはよくやってました。つま
りsに任意の長さの領域を割り当てたいからです。
処理系がメンバーの割り当て順序を自由に変更してよい
ことになったら、この手のプログラムは動かなくなる可
能性がありますね。
--
太田純(Junn Ohta) (株)リコー/新横浜事業所
ohta@sdg.mdd.ricoh.co.jp
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735