プロが教えるわが家の防犯対策術!

c言語の配列の境界調整について
以前、タイトル(c言語の境界調整について)の回答内容中で「データ型のアライメントとは何か、なぜ必要か」の下記のURLを紹介された中の配列の部分を
教えて頂きたい。
5.2 複合データ型の各要素のオフセット記述している、
 (char * )&D == (char *)&D + offsetof(D_t, Di) は、配列にも適用されるのです か
たとえば、 char s[4] = {1.2.3,4}; の場合
   char * が 4バイトであれば、先頭のアドレスは、4バイトアライメントで
   次の配列の要素は、1バイトアライメントでよろしいでしょうか
 
(http://www5d.biglobe.ne.jp/~noocyte/Programming/ …

A 回答 (2件)

char * が 4バイトであることと「char の配列が 4バイト境界に整列する」こととは本質的に無関係です... というか,

どこが関係するんだろう?
    • good
    • 0
この回答へのお礼

回答ありがとうございます、なぜ、gccでcharの配列の先頭アドレスが偶数と
なるでしょうか、教えてください。

お礼日時:2009/01/08 14:38

そういう規定はないのでコンパイラ次第でしょう


バイト境界を揃えたいときはgccなら
__attribute__((aligned(4)))
のように自分で明示しないとだめです
    • good
    • 1
この回答へのお礼

回答、ありがとうございます、私のパソンコンで実施したいと思います。

お礼日時:2009/01/08 14:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!