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的对齐数))
[解决办法]