3.c语音结构体成员内存对齐详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.c语音结构体成员内存对齐详解相关的知识,希望对你有一定的参考价值。
一.关键一点
最关键的一点:结构体在内存中是一个矩形,而不是一个不规则形状
二.编程实战
1 #include <stdlib.h> 2 #include <stdio.h> 3 4 struct A 5 { 6 int a; 7 char b; 8 }; 9 10 int main() 11 { 12 struct A a; 13 a.a = 1; 14 a.b = 1; 15 printf("%p\\n", &a); 16 17 system("pause"); 18 }
我们可以看到前四个字节是int a的 后四个字节是 char b的 虽然只用了前面一个字节 后面三位都用cc给替代了
如果在结构体中再定义一个char变量,则继续多分配的内存中的后一个字节 还是八个,(按最大的单位进行对齐)
还有就是如果改了顺序,则内存也变了
三.几个例子
这是这个结构体的内存大小为12
再举个列子:
求这个结构体大小
为十二个字节,这里有个有意思的地方,当short放到小单位里面是要以两个字节对齐,所以放在后面的两个字节中
以上是关于3.c语音结构体成员内存对齐详解的主要内容,如果未能解决你的问题,请参考以下文章