c++-结构体内存对齐
来源:互联网 发布:明天教室网络课怎么样 编辑:程序博客网 时间:2024/05/01 15:41
为什么要对齐
主要是为了性能原因,在对其的地址块上访问数据块会提高性能
对其的原则:
1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);
3) 结构体的总大小为结构体最宽基本类型成员大小与系统默认的对其数之中的较小者的整数倍,如有需要编译器会在最末一个成员之后加上填充字节
通过实例来说明:
#include <iostream>using namespace std;struct s1{char a;int b;};struct s2{char c;s1 s;int d;};#pragma pack(4)struct s3{char a;double b;};#pragma pack()int main(){cout<<sizeof(s1)<<endl; //8,window下系统默认的对齐大小为8,Linux默认对齐大小为4cout<<sizeof(s2)<<endl; //16,在s2中s1的成员是被打撒来看的,最宽数据成员大小为4,但是s1是作为一个整体出现的,所以c和a不能放到一起cout<<sizeof(s3)<<endl; //12,系统默认对齐大小可以通过pragma pack()进行修改,windows下取值只能为1,2,4,8,16。Linux下取值只能为1,2,4return 0;}
0 0
- c++-结构体内存对齐
- C结构体内存对齐
- C结构体内存对齐
- C 结构体内存对齐原则
- C/C++结构体内存对齐
- C语言中的结构体内存对齐
- C 结构体内存对齐原则
- C/C++结构体内存对齐
- C/C++结构体内存对齐
- C语言结构体内存对齐问题
- C语言结构体内存对齐
- C语言之结构体内存对齐
- C语言结构体内存对齐问题
- C语言结构体内存对齐法则
- c语言结构体内存对齐
- C 结构体内存对齐原则
- 结构体内存对齐
- 结构体内存对齐
- CAN总线负载率原理及计算
- HDU 1896 Stones ——STL 优先队列
- 数据库同步-重置同步数据
- 深入学习JDK 线程池(之七)
- 寄存器编址
- c++-结构体内存对齐
- Cocos2d学习之路五(Box2d使用CCPhysicsSprite时编译不通过解决方法)
- ubuntu12.04-64 server系统上hadoop2.2.0/2.3.0环境搭建及总结
- 定义数组为有序数组模型,并利用二分法进行查找,删除特定值(缺点:只能删除一个值,若有相同的值,则删除第一个)
- 蚁群算法求解旅行商问题 python
- codeforces 405B. Domino Effect
- 马上要考试了,头都大了
- 关于GCC manuals
- C代码实现控制Win 7系统音量