c中的内存对齐
来源:互联网 发布:经济数据分析论文 编辑:程序博客网 时间:2024/05/20 02:54
1、结构体对齐原因有很大部分是因为计算机扫描的内存单元个数,也就是数据总线的大小。
内存对齐的问题主要存在于理解struct等复合结构在内存中的存储结构。
在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,但不一定是相邻存储,第一个成员的地址和整个结构的地址相同。
原则1:数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。
3、考虑一个问题,为什么要设计内存对齐的处理方式呢?
引入内存对齐的原因一方面在于硬件取指的方便,例如在32位总线系统上,如果一个int变量(4字节)放在一个4的倍数开始的内存地址中,则CPU可以一次将其数值读出,否则的话就要分两次才能读出。另一个重要的原因在于移植性的要求,也就是说不是所有的硬件平台都能访问任意地址上的任意数据的,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。引入内存对齐的目的主要是为了可移植性以及最大限度提升硬件性能。详细可参看如下链接http://www.doc88.com/p-032414262099.html
4、
- C中的内存对齐
- C中的内存对齐
- c中的内存对齐
- C/C++中的内存对齐
- c语言中的内存对齐
- C/C++中的内存对齐
- c语言中的内存对齐
- C语言中的内存对齐
- C/C++中的内存对齐
- c/c++ 中的内存对齐
- 浅谈C中的内存对齐
- C/C++中的内存对齐
- C语言中的内存对齐
- c语言中的内存对齐问题
- 浅谈C语言中的内存对齐
- C/C++中的结构体对齐问题(内存对齐)
- C/C++中的结构体对齐问题(内存对齐)
- C/C++中的结构体对齐问题(内存对齐)
- (Android实战)ProgressBar+AsyncTask实现界面数据异步加载(含效果图)
- ios 全景浏览效果demo
- 【discuz3.x】discuz3.x后台【管理中心】->【全局】设置中表单名汇总
- android AsyncTask介绍
- Eclipse Hadoop插件使用
- c中的内存对齐
- C++一些注意点之指针成员管理
- 《UNIX环境高级编程》笔记--errno是否是线程安全的?
- mvn jetty:run出现OutOfMemoryError: PermGen space的处理
- BFS+状态压缩 hdu-1429 胜利大逃亡(续)
- FusionCharts数值格局设置
- cpu高分析方法
- vibe前景提取方法学习
- MD5 算法描述