结构体进阶详解-(结构体内存对齐)
目录
结构体内存对齐
结构体内存对齐规则:
宏-offsetof
结构体嵌套内存对齐
为什么存在内存对齐?
修改默认对齐数
结构体内存对齐
首先我们来看这样一段代码:
struct S1
{
char c1;
int i;
char c2;
};
接下来我们来预测一下,该结构体在内存中所占几个内存?
那么我想不少小伙伴就是开始下面这种分析方式:
struct S1
{
char c1;//1
int i;//4
char c2;//1
};
1+1+4,所以结果是占用了六个字节,那么到底对不对呢?
让我们一起 Ctrl+F5 代码走起来,结果一试便知
很显然结果和我们的猜测并不一样。
那我们不妨再试一段代码:
struct S2
{
char c1;//1
char c2;//1
int i;//4
};
可以看出,成员一样,只是顺序发生了改变,那这样的话占用内存会不会发生改变?
Ctrl+F5 代码走起来,结果一试便知
那这是怎么回事呢?
很显然跟我们所想的有出入,内存造成
共有 0 条评论