0

ユニオンのメモリアドレスの割り当てについて少し混乱しています。

typedef union { 
               char state[x];
               char encode[4];
               int index;
} Location;

コードを書く際にいくつかのアライメントルールを使用します。例:

int      4 bit alignment
double   4 bit for linux
char *   4 bit for linux

「その組合がどのように調整されるか」これらの条件のために; もしも

   x < 4      ?
   x = 4      ?
   x > 4      ?

プラットフォームLinuxアセンブリx8664ビット

注:より良い意見がある場合は、その質問を改善するときに遠慮なく

4

1 に答える 1

1

私はあなたの実際の質問が何であるかについて少し混乱しています:-)

しかし、その組合がどのように連携するかを尋ねている場合、組合はここで2つの関連する規則に従わなければなりません.

  1. すべての項目は、ユニオンの先頭から開始する必要があります。
  2. 全体として、共用体はその最も厳密なコンポーネントのアライメントを持っている必要があります。

言い換えれば、これintがアライメントの原動力である可能性が高いです。

xシングルのアラインメントが 1 の場合、の値はここでは関係ありませんchar。整列する必要があるのは配列全体ではなく、その各要素だけです。

于 2011-11-02T07:56:47.493 に答える