[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 メーリングリストの案内