社区
非技术区
帖子详情
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]是什么类型?请给出答案和解释
...全文
768
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
_
获取
硬盘序列号、cpu号、bios号、网卡号
delphi
_
获取
硬盘序列号、cpu号、bios号、网卡号
Delphi
获取
MAC地址
Delphi
获取
MAC地址
非技术区
830
社区成员
53,574
社区内容
发帖
与我相关
我的任务
非技术区
Delphi 非技术区
复制链接
扫一扫
分享
社区描述
Delphi 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章