结构体的大小与内存对齐规则
来源:互联网 发布:软件测试就业 编辑:程序博客网 时间:2024/06/13 22:58
内存对齐规则
#include "stdafx.h"//#pragma pack(8) 和环境有关 window系统默认为8 linux为4#if 0内存对齐本质是 牺牲空间来换取时间----内存对齐规则:(1):取pack(n),取结构体中最大变量类型的大小m(char short int)n=8 m=4; 取俩数的小值 Y=4 外对齐(Y为外对齐)(2):1(char) 2(short) 4(int)(实际类型大小) 比出一系列内对齐规则 X 1 2 4 (将实际类型大小和Y值进行比较,取其中的小者得到x)(3):所谓的内对齐(起始地址为0),就是地址值能被x整除的地方开始存放数据 (地址的值/X 如果能整除则从此处存放) (4):所谓的外对齐,就是结束地址,是外对齐的最小整数倍(结尾可根据实际情况而定)-------------------------------------------------------------//结构体内为 char double float shortn 8 m 8 Y 81 8 4 2 X 1 8 4 2如果#pragma pack(1)取1了n 1 m 8 Y 11 8 4 2 X 1 1 1 1 实际大小除以X都能除尽 则按照规则就是依次存放所以大小为 1+8+4+2=15#endifstruct type{char a; //1double b; //8float c; //4short d; //2};int _tmain(int argc, _TCHAR* argv[]){printf("size=%d\n", sizeof(struct type));return 0;}
结构体的大小
#include "stdafx.h"struct type{char a; //1 //空了3个字节 内存对齐的需要 //short c; short在这个位置type大小为8int b; //4//short c; short在这个位置type大小为12}/*var*/; //结构体的类型 type不占空间 但var占空间int _tmain(int argc, _TCHAR* argv[]){struct type var;printf("sizeof(struct type)=%d sizeof(var)=%d\n",sizeof(struct type), sizeof(var));printf("&var.a=%p &var.b=%p\n", &var.a, &var.b);return 0;}
阅读全文
0 0
- 结构体的大小与内存对齐规则
- 结构体的大小与内存对齐
- 结构体的大小(内存对齐)
- 内存对齐 结构体大小 内存空洞的分析
- 在结构体中内存对齐的规则及其重要性
- 关于结构体的大小(内存对齐)
- C++ 内存对齐 (计算结构体的大小)
- 内存对齐与补齐 字节对齐与结构体大小
- 内存对齐 - 求结构体大小
- 结构体和联合体的大小,结构体内存对齐的原因、规则以及柔性数组
- 内存对齐问题--vs2010下位域结构体对齐规则
- 结构体与内存对齐
- C++ 字节对齐与结构体/共用体的大小
- 结构体对齐规则总结与学习
- 字节对齐与结构体大小
- 字节对齐与结构体大小
- 字节对齐与结构体大小
- 字节对齐与结构体大小
- css中关于color、background、backgroud-color的区别
- 关于JDK&JMeter安装及环境变量配置
- Swift 基础语法的几个注意事项
- selenium学习笔记
- Python学习笔记——列表
- 结构体的大小与内存对齐规则
- /usr/bin/env: node: No such file or directory
- 使用ST-Link Utility去除STM32芯片读写保护
- jmeter登录压力测试之登录
- PAT (Basic Level) Practise (中文)1067. 试密码(20)
- Python运算符
- LightOJ-1399-线段树求区间相同颜色连续的最大长度
- 分享一波好网站(不定时更新)
- Hibernate(十)多表联查之双向多对多