首页 > 代码库 > 关于结构体的大小
关于结构体的大小
第一步是要知道结构体大小的计算方式:
结构体大小等于最后一个成员的偏移量加上最后一个成员的大小,
偏移量指的是结构体变量中成员的地址 – 结构体变量地址的差, 第一个成员的偏移量为0
下面代码
TRecord2 = record a: Integer; b: Integer; c: Integer; end; {$A8+} TRecord1 = record a1: Byte; a2: Integer; a3: Int64; a4: Byte; a5: Word; case Integer of 0: (e1: TRecord2); 1: (e2: Int64); end;
直接用数据说话吧:
下面是每个成品的偏移量
a1:0, a2:4, a3:8, a4:16, a5:18, e1:24, e2:24, size:40
其实可以画一个格子<下面每个格子代表对齐的字节数>
a1, a2 | a3 | a4,a5 | e1 | e1 |
因为对齐都是2的倍数,所以a5是18而不是17.
还有一种比较特殊的
TRecSingle = record
a1: Byte;
end;
这种大小是1
关于结构体的大小
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。