.
属性‘pack_mode’
.
.

此编译指令定义在分配期间如何打包数据结构。该属性必须插入到数据结构上方,并且会影响整个结构的打包。

语法

{attribute 'pack_mode' := '<Value>'}

插入位置:在数据结构的声明上方

.

.<值>的可能值:

pack_mode

关联的打包方法说明

描述

0

对齐,

所有变量都分配给字节地址。没有内存缺口。

1

1字节对齐

2

2字节对齐

.

  • 字节地址处的1字节变量
  • 2个字节的变量位于可被2整除的地址处。最大间隔为1个字节。
  • 地址可被2整除的4字节变量。最大间隔为1个字节。
  • 地址可被2整除的8字节变量。最大间隔为1个字节。
  • 字符串始终位于字节地址。没有差距的结果。

4

4字节对齐

.

  • 字节地址处的1字节变量
  • 字节地址处的1字节变量最大间隔为1个字节。
  • 地址可被4整除的4字节变量。最大间隔为3个字节。
  • 地址可被4整除的8字节变量。最大间隔为3个字节。
  • 字符串始终位于字节地址。没有差距的结果。

8

8字节对齐

.

  • 字节地址处的1字节变量
  • 地址可被2整除的2字节变量。最大间隔为1个字节。
  • 地址可被4整除的4字节变量。最大间隔为3个字节。
  • 地址可被8整除的8字节变量。最大间隔为7个字节。
  • 字符串始终位于字节地址。没有差距的结果。

 

根据结构,各个模式的内存映射可能没有差异。因此,具有pack_mode = 4的结构的内存分配可以对应于pack_mode = 8的结构。

 

结构数组:如果将结构组合成数组,则在结构末尾添加字节,以便对齐下一个结构。

.
 例1
.
 例2
.
 例3