游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1629|回复: 4

关于pragma的问题

[复制链接]

13

主题

31

帖子

46

积分

注册会员

Rank: 2

积分
46
发表于 2006-7-8 13:36:00 | 显示全部楼层 |阅读模式
有个很基础的问题还得问大家很不好意思就是pragma pack(1)指的是不是后面的结构在编译的时候打包,还有象这类基础问题看什么书比较好  谢谢

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2006-7-8 15:02:00 | 显示全部楼层

Re:关于pragma的问题

这个是指对结构,类成员,联合等按几字节对齐,对齐后便于CACHE,能提高效率.
这些可查MSDN,都很详细的.

13

主题

31

帖子

46

积分

注册会员

Rank: 2

积分
46
 楼主| 发表于 2006-7-8 16:16:00 | 显示全部楼层

Re: 关于pragma的问题

谢谢楼上的大哥

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-7-9 20:58:00 | 显示全部楼层

Re: Re:关于pragma的问题

moremoretime: Re:关于pragma的问题

这个是指对结构,类成员,联合等按几字节对齐,对齐后便于CACHE,能提高效率.
这些可查MSDN,都很详细的.

仿佛不是用来击中cache的吧...因为cache和几字节对齐没什么关系......
对齐的用处主要用处应该是:
1.对数据进行压缩,像2进制数据的存储和传输,比如网络传输.
2.方便对数据进行访问,比如用sse内联,就必须把相关数据16字节打包.
3.内存齐位:n字节的数据如果其地址以n的倍数开头则访问速度会得到大大的提高
PS:32的intel和amd平台仿佛在asm里都是用的4字节对齐,ms的vs和.net对c++默认用的是8字节对齐

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-7-10 11:51:00 | 显示全部楼层

Re:关于pragma的问题

比如
struct MyStruct
{
    char cData;
    long lData;
};

MyStruct data;

如果按4字节对齐,data的大小是8个字节,cData和 lData各占4个字节
如果按1字节对齐,data的大小是5个字节,cData占1个,lData占4个.但lData跨越了字节边界,CPU要分两次才能读出来.虽然慢了,但有个好处,在网络传输和文件存取的时候容易保持一致。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 21:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表