首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

struct大小是否总是里面最大元素的整数倍

2012-09-14 
struct大小是不是总是里面最大元素的整数倍条件:1 不适用pargma pack,也就是系统默认条件。2 32平台,不考虑

struct大小是不是总是里面最大元素的整数倍

条件:
1 不适用pargma pack,也就是系统默认条件。
2 32平台,不考虑8字节的常见类型如double,//linux ,windows的模数在8字节是不同的。



[解决办法]
没有放之四海皆准的结论,除了“不确定”
虽然它一般是如此的,但是绝对不要依赖此。
[解决办法]
这个问题很简单的!
struct的内存对齐规则是:
1.里面的变量先根据内存对齐的规则对齐,这个没有任何疑问;
2.使用#pargma pack(m)和自身变量长度最大值n中的较小者的倍数来做对齐,在vc6之后,所有的vs版本默认全部采用8字节对齐,所以就算是double型的,lz你的结论也是正确的!
[解决办法]
简单的路就是永远不要写依赖这个细节的代码,而你确实很容易就可以做到。
[解决办法]
参考:
关于内存对齐问题 
再谈内存对齐问题
三谈内存对齐问题

上面三篇文章的阅读顺序,建议反过来,即三谈->再谈->关于。

derived class的对齐数 = min(指定的全局对齐数,max(base class的对齐数,derived class的对齐数))
[解决办法]

探讨
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

热点排行