CNDEV
CNDEV.ORG
当前在线
论坛
CBD
程序员情感CBD
程序员见面交流会
CBD开发区
Java/J2ME
.NET/C#
数据库
Delphi/BCB
Visual C
其它
修真养身
中国象棋
纪念日
谈钱太俗,还是投机吧
听音乐
iCosta
资源共享
一隅
好文共赏
看电影看美剧
待定
狗屎
雪域召唤
工作流
专业显摆区
语录
情感
批评与自我批评
爱情故事
发牢骚
看三点区
游戏
CNDEV-CS/WOW
浩宇长空
生活
家有XPH
我爱学英语
美食天地ORG
半调子体育迷
观澳园友邻
搞笑奇文
拍照片
我读书我存在
论坛系统
超级垃圾站
系统建议及BUG
系统测试
中国开发网
: 论坛:
程序员情感CBD
: 贴子 705644
周星驰
:
编译器这样做是有道理的,即便你自行按单字节对齐,如果事后不恢复默认对齐方式,恐怕程序终究会出错或crash。
[阅读: 403] 2009-03-16 03:28:37
<空>
相关信息:
[技术帖]这段程序我觉得有句话有问题,你们觉得呢
(1099字)
(
bjwf
[497]
2009-03-13 06:31
)
地址均按指向字节的指针计算,只在最后返回时按需要(参数type)转换
(空) (
haitao
[322]
2009-03-13 07:27
)
我觉得挺正常的呀。
(211字)
(
Water
[295]
2009-03-13 07:29
)
address & 0x03 相当于 (address % 4),不是对齐,
(214字)
(
bjwf
[334]
2009-03-13 07:52
)
不太清楚这程序是干啥的,不过在有的时候应该全局变量也可以这样用,在很多嵌入式环境下,静态存储区是可以指定地址和大小的。
(空) (
Water
[413]
2009-03-13 08:38
)
我觉得这里有一个假设就是系统按偶数字节对齐,变量地址不会因为前面单字节变量的出现而为奇数。但是单字节变量是有可能会是奇数地址的,应该依赖于是bigendian还是littlendi……
(空) (
周星驰
[469]
2009-03-13 09:30
)
这里应该是假定32位系统,4字节对齐。
(空) (
周星驰
[271]
2009-03-13 09:35
)
有没有定论了?我觉得不会有对齐问题,也不会越界如果不强制做不同类型的赋值,但是应该也是假定之一。
(空) (
周星驰
[304]
2009-03-15 10:17
)
如果假定是 32bit 4字节对齐那没有对齐问题
(空) (
holly
[257]
2009-03-15 10:27
)
可是如果一个32位的系统不这样对齐,恐怕就不正常吧,性能什么的肯定有问题。
(空) (
周星驰
[317]
2009-03-15 10:31
)
我的意思是: 假定 1) 32bit && 2) 4byte 对齐
(空) (
holly
[262]
2009-03-15 10:36
)
对齐的意思是cpu可以从奇数地址开始访问一个字.比如x86
(242字)
(
bjwf
[529]
2009-03-15 12:08
)
bios 什么什么的那个变量是 u32 的, 编译器保证对齐了
(空) (
holly
[281]
2009-03-15 12:48
)
后面加的是 & 03 也保证了对齐. 越界是有可能的
(空) (
holly
[263]
2009-03-15 12:49
)
是 & 3 不是& 2 或 &4
(空) (
bjwf
[248]
2009-03-15 13:01
)
靠, 我看错了
(13字)
(
holly
[281]
2009-03-15 13:53
)
编译器这样做是有道理的,即便你自行按单字节对齐,如果事后不恢复默认对齐方式,恐怕程序终究会出错或crash。
(空) (
周星驰
[402]
2009-03-16 03:28
)
有定论,有问题.
(437字)
(
bjwf
[394]
2009-03-15 12:24
)
我反对,你输入那个1是强行输入了个错误值,实际上真实的地址值不可能为奇数(纠正我上面的big、little的说法)。
(空) (
周星驰
[315]
2009-03-16 03:26
)
再纠正,单字节变量是可能为奇数,刚试了下。但是不影响结论。
(空) (
周星驰
[263]
2009-03-16 03:50
)
所以我说那段代码有问题啊,我们讨论的是那段代码有没有问题。
(空) (
bjwf
[243]
2009-03-16 05:15
)
我觉得你觉得得对
(空) (
holly
[263]
2009-03-13 12:21
)
欢迎光临本社区,您还没有登录,不能发贴子。请在
这里登录