结构体对齐与内存计算

以64位系统为例,每个字占64位,也就是8字节,结构体的对齐规则为: 地址%min(变量大小,8) =0

eq:

typedef struct{
	int a; // 4字节
	char c; // 1字节
	short b; // 2字节
}s1;
typedef struct{
	char c; // 1字节
	int a; // 4字节
	short b; // 2字节
}s2;
typedef struct{
	int a; // 4字节
	short b; // 2字节
	char c; // 1字节
}s3;

s1结构体布局为:| | | | | | | | |占用空间为8字节;int char short

s2结构体布局为:| | | | | | | | |

| | | | | | | | | 占用空间为10字节;

s3结构体布局为:| | | | | | | | | 占用空间为7字节;

总结:结构体对齐是一种以空间换时间的方法,通过模数存储提高单次访存的成功率;通常将结构体中空间较大的变量先声明以降低内存浪费。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务