1.数据对齐(学习“C语言结构体”和“32位与64位内存与运行区别”所得)

《个人学习随笔》

问题的由来:
(图一)
1.数据对齐(学习“C语言结构体”和“32位与64位内存与运行区别”所得)_第1张图片

从上图引申一下数据类型对应字节
(图二)
1.数据对齐(学习“C语言结构体”和“32位与64位内存与运行区别”所得)_第2张图片
数据对齐,是牺牲一些内存,加快运行效率。其过程由编译器自动执行,但牺牲多少内存由个人程序设计决定。

比如可以给编译器传递预编译指令而改变对指定数据的对齐方法,通过添加预定义命令#pragma pack(value)来对对齐值进行自定义。
如写入预编译指令#pragma pack(2),即告诉编译器按两字节对齐;如#pragma pack(1),对齐值变为1,此时内存紧凑,不会出现内存浪费,但效率降低了。
效率之所以降低,是因为:如果存在更大字节数的变量时(比1大),比如int类型,需要进行多次读周期才能将一个int数据拼凑起来。

此外也可以在结构体成员排布中人为调整好顺序,如图一。

参考文献:
1.https://www.runoob.com/cprogramming/c-structures.html
2.https://blog.csdn.net/qq_22654611/article/details/52838622

你可能感兴趣的:(个人学习随笔)