如何实现C语言结构体字节对齐的深入分析改写为一个长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1696个文字,预计阅读时间需要7分钟。
目录+前言+一、什么是字节对齐+二、结构体字节对齐+三、字节对齐的作用
目录
- 前言
- 一、什么是字节对齐
- 二、结构体字节对齐
- 三、#pragma pack()的使用
- 总结
前言
本教程可能会用到一点汇编的知识,看不懂没关系,知道是那个意思就行了。使用的工具是vs2010。
一、什么是字节对齐
字节对齐是字节按照一定规则在空间上排列。
现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。
在我们之前写程序的时候可能会发现有的时候你定义的变量是一个字节,但是他在内存中依然按照四个字节给你存储,因为在32为系统中,4字节对齐执行效率是最快的。这就是一种牺牲内存换取性能的方案。
举个栗子
我们知道,全局变量在在内存中是有一个固定的地址的,如果不重新编译的话,这个地址是不会改变的。所以我们拿全局变量举例。
本文共计1696个文字,预计阅读时间需要7分钟。
目录+前言+一、什么是字节对齐+二、结构体字节对齐+三、字节对齐的作用
目录
- 前言
- 一、什么是字节对齐
- 二、结构体字节对齐
- 三、#pragma pack()的使用
- 总结
前言
本教程可能会用到一点汇编的知识,看不懂没关系,知道是那个意思就行了。使用的工具是vs2010。
一、什么是字节对齐
字节对齐是字节按照一定规则在空间上排列。
现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。
在我们之前写程序的时候可能会发现有的时候你定义的变量是一个字节,但是他在内存中依然按照四个字节给你存储,因为在32为系统中,4字节对齐执行效率是最快的。这就是一种牺牲内存换取性能的方案。
举个栗子
我们知道,全局变量在在内存中是有一个固定的地址的,如果不重新编译的话,这个地址是不会改变的。所以我们拿全局变量举例。

