Record的内存分配,需要四字节对齐.
Packed record的内存分配,不需要四字节对齐.
type
Rec1 =record
A:Byte;//1字节
B:LongWord;//3字节
end;
Rec2=packed record
A:Byte;//1字节
B:LongWord;//4字节
end;
Sizeof(Rec1)值为8
Sizeof(Rec2)值为5
TRecord = Record
s: string[4]; //5字节
f: single; //4字节
c: char; //1字节
i: Integer; //4字节
end;
//Declare a packed record
TPackedRecord = Packed Record
s: string[4]; //5字节
f: single; //4字节
c: char; //1字节
i: Integer; //4字节
end;
按
Record的内存分配,需要四字节对齐.
Packed record的内存分配,不需要四字节对齐.
规则:
Record中,s 5字节要占两个四字节 (8)
f 4字节要占一个四字节 (4)
c 1字节要占一个四字节 (4)
i 4字节要占一个四字节 (4)
计 20字节
Packed Record不用这样排,所以就是 5+4+1+4=14字节