記憶領域および整列は常にバイト単位で表されます。シングルバイトに収まる値は、バイト整列です。
データ型のサイズおよび整列は、コンパイラのオプションとプラットフォーム、および変数の宣言方法に依存します。COMMON ブロック内のデフォルトの最大の整列は、4 バイトの境界整列です。
デフォルトのデータ整列および記憶領域の割り当ては、-aligncommon、 -f、-dalign、-dbl_align_all、-xmemalign、および -xtypemap などの特別なオプションを指定してコンパイルすることにより、変更できます。このマニュアルは、これらのオプションが有効でないものとして記述されています。
いくつかプラットフォームにおける特殊ケースのデータ型および整列については、『Fortran プログラミングガイド』に追加の説明があります。
デフォルトのサイズおよび整列を次の表にまとめます (データ型のその他の点およびオプションは考慮していません)。
表 4–3 デフォルトのデータサイズおよび整列 (バイト)
Fortran 95 のデータ型 |
サイズ |
デフォルトの整列 |
COMMON 内の整列 |
---|---|---|---|
BYTE X CHARACTER X CHARACTER*n X |
1 1 n |
1 1 1 |
1 1 1 |
COMPLEX X COMPLEX*8 X DOUBLE COMPLEX X COMPLEX*16 X COMPLEX*32 X |
8 8 16 16 32 |
4 4 8 8 8/16 |
4 4 4 4 4 |
DOUBLE PRECISION X REAL X REAL*4 X REAL*8 X REAL*16 X |
8 4 4 8 16 |
8 4 4 8 8/16 |
4 4 4 4 4 |
INTEGER X INTEGER*2 X INTEGER*4 X INTEGER*8 X |
4 2 4 8 |
4 2 4 8 |
4 2 4 4 |
LOGICAL X LOGICAL*1 X LOGICAL*2 X LOGICAL*4 X LOGICAL*8 X |
4 1 2 4 8 |
4 1 2 4 8 |
4 1 2 4 4 |
次の点に注意してください。
REAL*16 および COMPLEX*32: 64 ビット環境 (-m64 を指定してコンパイル) では、デフォルトの整列は、表で 8/16 と示されるように、8 バイトではなく 16 バイト境界整列になります。x86 プラットフォームでは、この「4 倍精度」データ型は使用できません。
配列および構造体は、その要素または欄に従って整列します。配列は、配列要素と同じように整列します。構造体は、もっとも広い整列で整列する欄と同じように整列します。
オプション -f または -dalign は、8、16、または 32 バイトのデータすべてを、強制的に 8 バイト境界で整列させます。オプション -dbl_align_all の場合は、すべてのデータが 8 バイト境界で整列します。これらのオプションを使用するプログラムには、移植性がない場合があります。