结构体--其二

结构体的内存分析:

结构体的对其:

在VS中默认的对齐数是8.

为什么要存在内存对齐呢:

总的来说:结构体内存对齐就是以空间换取时间的操作。

修改默认对齐数:

#pragram,这个预处理指令可以修改编译器的默认对齐数。

具体的内存结构体对齐:

假设内存空间如下:

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

结构体如下:

一个char 类型是一个字节。

一个int 类型是四个字节。

根据结构对齐法则,第一个char 在内存空间是0的位置,而int是四个字节,则内存空间必须是四的整数倍,所以说内存空间1,2,3就被空了出来,从第5个开始int占5,6,7,8四个字节,第二个char是9内存空间。最后结构体的总体所占的内存空间是编译器和最大结构体成员之中的最小值。

在VS中编译器默认的是8,而在这个结构体中,最大的类型成员是int类型,所以两者取最小值--4.

综上所述结构体的内存必须是4的倍数--也就是上图中11的位置,所以9,10,11的空间也就空出来了。综上一共占了12个字节的空间。

因此,结构体当书写结构体成员的时候,尽可能的将相同的成员写在一起,字节小的类型写在前面,来节约内存空间。

下一节--讲解结构体的位操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值