我的代码变得异常,如下所示
#include<stdio.h> struct a { int x; char y; }; int main() { struct a str; str.x=2; str.y='s'; printf("%d %d %d",sizeof(int),sizeof(char),sizeof(str)); getch(); return 0; }
4 1 8
据我所知,该结构包含一个大小为4的整数变量和一个大小为1的char变量,因此结构a的大小应为5.但是结构的大小为8.
我正在使用visual C编译器.
为什么会这样?
解决方法
它被称为
Structure Padding
具有以4字节字对齐开始的数据结构(在具有4字节总线和处理器的cpu上)在围绕存储器以及RAM和cpu之间移动数据时效率更高.
您通常可以使用编译器选项和/或编译指示关闭它,这样做的具体细节取决于您的特定编译器.
希望这可以帮助.