全攻略有点大放厥词,哗众取宠了,其实是一些常见的问题罢了。但是自认为总结的还算全面一点吧,请大家多多赐教,我只是个初学者。
接下来主要讨论四点:一、不涉及位域的内存对齐二、涉及位域的内存对齐三、成员变量含有结构体的内存对齐情况四、要求内存对齐的原因及优点
-----------------------------------------------------------------------------------
接着上一篇往下写~~
二、涉及位域的内存对齐注:由于能力有限,在此仅讨论在VC++6.0编译环境下的情况,对于其他编译环境下的情况,由于没有硬件支持,只能作罢,但会将查到的相关知识贴在最后,但不做讨论。涉及位域的内存对齐原则 如下,后用代码分析验证:1) 若相邻成员变量类型相同,且其位宽之和不大于成员变量类型位宽(在次严重强调,是 类型位宽 而不是成员变量sizeof,也不是类型的sizeof或者其他什么)大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止; 2) 如果相邻位域字段的类型相同,但其位宽之和不大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍; 3) 如果相邻的位域字段的类型不同,不同位域字段存放在不同的位域类型字节中;(这一条其实会根据编译器的不同而采用不同的规则,此处以VC++6.0标准来说明)4)其实不存在4),这一条是说,在此,还要遵守不涉及位域的2),3)条规则,已经部分遵守不涉及位域的第一条规则实例分析,代码如下: