[Armadillo:04937] Re: Armadillo-210 の構造体について

Masahiro Hanada email@hidden
2010年 2月 1日 (月) 17:37:18 JST


花田です。

> ネットで調べたところ、以下のように __attribute__ ((packed))を構造体属性に付けると防止できる記載があったので、試したところサイズは適正になったのですが、
> struct test{
>     char   ChNo[1];
> }w_mem __attribute__ ((packed));
> 
> この対応は適切なのでしょうか?

目的とした動作をさせるためとしては、有効と思います。
しかしながら、packedしない場合と比較して
速度面でデメリットが出る場合などもあります。

なぜこうしたことが起こるかということは、C言語の仕様と同時に
CPUのハードウェア、アーキテクチャについての理解が必要になります。

以下のサイトなどで詳しく説明されているので、参考にしてみてください。
http://www5d.biglobe.ne.jp/~noocyte/Programming/Alignment.html


"Masakatsu Yamada" <email@hidden> wrote:

> 世話になります山田と申します。
> 
> 早速ですが、構造体の実サイズについて、確認がございます。
> 
> 構造体の配列を共有メモリに展開するプログラムのデバック中に、実サイズより多くの領域を使用している事が解かり
> 以下のサンプル作りを実行すると、4バイトと表示しました。
> struct test{
>     char   ChNo[1];
> }w_mem;
> 
> int main(int argc, char* argv[])
> {
>  printf("sizeof w_mem= %d\n",sizeof(w_mem));
>  return 0;
> }
> 
> ネットで調べたところ、以下のように __attribute__ ((packed))を構造体属性に付けると防止できる記載があったので、試したところサイズは適正になったのですが、
> struct test{
>     char   ChNo[1];
> }w_mem __attribute__ ((packed));
> 
> この対応は適切なのでしょうか?
> お忙しい中申し訳ありませんが、ご教授ください。
> 
> よろしくお願いします。 
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo


____________________________________________________

    花田 政弘 (はなだ まさひろ)

    E-mail: email@hidden
____________________________________________________




armadillo メーリングリストの案内