Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

7.3.5 構造体

アプリケーションの内部データ構造体に穴がないか検査してください。境界整列条件を満たすには、構造体のフィールドとフィールドの間にパディングをします。この臨時パディングは、long またはポインタ型のフィールドが LP64 データ型モデル用に 64 ビットになったときに適用されます。SPARC プラットフォームの 64 ビットコンパイル環境では、あらゆる種類の構造体が、その中の最大量のサイズに合わせて整列されます。構造体を整列し直すときは、long およびおよびポインタ型フィールドを構造体の先頭に移動するという簡単な規則に従ってください。次の例を考えてみましょう。

struct bar {
   int i;
   long j;
   int k;
   char *p;
};   /* sizeof (struct bar) = 32 */

次の例は、同じ構造体を示しています。long およびポインタデータ型を構造体の先頭で定義しています。

struct bar {
  char *p;
  long j;
  int i;
  int k;
};   /* sizeof (struct bar) = 24 */