为什么不相等??

hongqi 2001-09-05 02:34:04
TRec=Record
T1: short;
T2: BYTE;
T3: DWORD;
end;
这两种方法为什么不等,没对齐吗?
intTostr(sizeof(TSOURCE_IDENTITY));//=8
intTostr(sizeof(short)+sizeof(Byte)+sizeof(DWord));//=7
...全文
57 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongqi 2001-09-05
  • 打赏
  • 举报
回复
I see, thanks!
By default, the values in a structured type are aligned on word or double-word boundaries for faster access
chechy 2001-09-05
  • 打赏
  • 举报
回复
因为Delphi会将数据结构进行对齐,一般以4个字节为单位。对齐后数据访问速度会加快。
如果不想使用对齐,可以这样:
TRec = packed record
...
end;
qiangsheng 2001-09-05
  • 打赏
  • 举报
回复
我认为是结构体里面有一个入口标志,或结尾标志,才会多一个字节。
zzutlink 2001-09-05
  • 打赏
  • 举报
回复
估计第一个里面是那种字符串的那种以'\0'结尾,所以多一个字节

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧