c++内存对齐
来源:互联网 发布:淘宝茶叶 编辑:程序博客网 时间:2024/05/23 19:53
C++内存字节对齐
每个编译器都有自己默认的字节对齐方式。可以通过#pragma pack(n) n为2的幂来改变这一系数。简单地说,32位默认为8bytes,64位默认为16bytes。
- 对齐的规则
1) 结构体或联合体或类的数据成员,第一个数据成员放在偏移量为0的位置,以后的偏移量放在指定数值和这个数据成员自身长度中比较小的哪个进行。
2) 结构体内每个成员相对于结构体首地址的偏移量都是成员大小的整数倍,可以理解为成员所占的空间取决于结构体内最宽的基本元素的大小
3) 结构体本身也会被补充为整数倍。
4) 相同的数据类型是连续的。 基本数据的大小
实例
typedef union { long i; int k[5]; char c; } DATE; struct data { //int cat; DATE cow; double dog; } too; DATE max; printf("%d", sizeof(struct data) + sizeof(max)); //////52
在黄色这里补齐了
一个int的大小来满足内存对齐
typedef union { long i; int k[5]; char c; } DATE; struct data { int cat;//比上述多了一个int DATE cow; double dog; } too; DATE max; printf("%d", sizeof(struct data) + sizeof(max)); //////52
共用体占用20字节,结构体中最大的基本类型为double,因此是8字节对齐。
1 0
- 【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++内存对齐
- C/C++内存对齐
- C中的内存对齐
- java集合中的fail-fast机制
- 用户界面事件(一)
- Android小程序-Walker导航页面(四)
- iscroll使用情况下click事件失效的问题
- 面向接口编程与面向实现编程
- c++内存对齐
- nginx 用户访问站点输入用户名密码验证
- 重建二叉树
- nginx负载均衡安装及测试
- C++实验4-乘法口诀表
- Android 屏幕适配问题归纳
- WWW需要注意的问题
- JS Range HTML文档/文字内容选中、库及应用介绍
- Using SSL in ASP.NET Web API