社区
非技术区
帖子详情
Delphi如何获取结构体在内存所占的字节?
xtfnpgy
2013-12-07 05:45:53
以下的记录(结构)变量在内存占多少字节?
type
a = packed record
v1: Byte; 1
v2: Word; 2
v3: string[16] 17;
v4: Double; 8
v5: string; 4
v6: TForm; 4
end;
后面的数字是我用SizeOf获取出来的大小,但是我查了书籍都不对,Double占8个字节,string也是8个字节,求解?string[16]是什么类型?请给出答案和解释
...全文
776
8
打赏
收藏
Delphi如何获取结构体在内存所占的字节?
以下的记录(结构)变量在内存占多少字节? type a = packed record v1: Byte; 1 v2: Word; 2 v3: string[16] 17; v4: Double; 8 v5: string; 4 v6: TForm; 4 end; 后面的数字是我用SizeOf获取出来的大小,但是我查了书籍都不对,Double占8个字节,string也是8个字节,求解?string[16]是什么类型?请给出答案和解释
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xtfnpgy
2013-12-10
打赏
举报
回复
谢谢你的回答!
xtfnpgy
2013-12-08
打赏
举报
回复
那就是说a=packed record //直接用sizeof就可以了 要是a=record //不进行压缩,那结果是什么呢
sololie
2013-12-08
打赏
举报
回复
实际编程中sizeof就可以了,如果说你是在跟书中的比较发现大小不一样,那就得注意是否packed了,具体可以搜 内存 字节对齐
sololie
2013-12-07
打赏
举报
回复
得看packed没了 a = packed record //加 packed顾名思义就是将内存进行了压缩,时间换空间 a = record //默认方式,不进行压缩,占用内存比上面的多,空间换时间
xtfnpgy
2013-12-07
打赏
举报
回复
所以获取的方法直接用SizeOf得到就可以了是吗?
sololie
2013-12-07
打赏
举报
回复
v3: string[16]
限定这个string只能装16个char,赋值时超过16个之后的被丢弃
string[1]是保留用来记录string长度的,所以v3= 16+1=17
32位系统下,指针自然是4字节,string、ftorm这些都是引用(指针)类型,都是4字节
byte、word、double这些是值类型,byte1字节,word2字节,
double和real都是8字节,single是4字节
xtfnpgy
2013-12-07
打赏
举报
回复
那上面说的并不明白啊,在内存中所占字节是那个表的字节?
sololie
2013-12-07
打赏
举报
回复
数据类型表
http://www.cnblogs.com/del/archive/2007/12/04/982167.html
delphi
2010 socket发送
结构体
协议
delphi
2010 socket发送
结构体
协议
DELPHI
读取
内存
一个利用
DELPHI
读取运行中进程
内存
的示例程序
Get-Memory-Information.rar_
delphi
GetMemory(_
delphi
内存
_
delphi
内存
Delphi
获取
内存
信息,包括
内存
使用百分比,总物理
内存
,未使用物理
内存
,交换文件大小等等
Delphi
获取
MAC地址
Delphi
获取
MAC地址
delphi
_
获取
硬盘序列号、cpu号、bios号、网卡号
delphi
_
获取
硬盘序列号、cpu号、bios号、网卡号
非技术区
830
社区成员
53,574
社区内容
发帖
与我相关
我的任务
非技术区
Delphi 非技术区
复制链接
扫一扫
分享
社区描述
Delphi 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章