C语言中字符对齐(内存对齐)问题(测试环境visual studio 2010)
来源:互联网 发布:js点击空白关闭弹出层 编辑:程序博客网 时间:2024/05/16 00:36
自然对界:一个变量的内存地址正好位于它长度的整数倍
有关结构的字符对齐方式:
结构体内的变量按照自然对界对齐,数组如char a[10]的自然对界是1Byte。
结构体按照结构体内最大的自然对界进行对齐
例子:
struct test{int g;char w[10];double l;char gwl;};int _tmain(int argc, _TCHAR* argv[]){printf("%d",sizeof(struct test));getchar();return 0;}运行结果:32
32 = 4+10+(2+8)+1+7
有关union的字符对齐方式:
按照union内成员最大的自然对界进行对齐
整个union大小为占空间最大的成员按上述对齐方式对齐后的大小
例子:
union test{int g;char w[10];double l;char gwl;};int _tmain(int argc, _TCHAR* argv[]){printf("%d",sizeof(union test));getchar();return 0;}运行结果:16
按照double的自然对界进行对齐,union的大小为成员char w[10]的大小
关于自己定义字符对齐方式
#pragma pack(n)..代码.#pragma pack()//取消自定义对齐方式结构体中成员对齐方式为n与自然对界中较小的(union相同,最后取成员中最大的对齐方式)
例子:
#pragma pack(2)struct test{int g;char w[10];double l;char gwl;};int _tmain(int argc, _TCHAR* argv[]){printf("%d",sizeof(struct test));getchar();return 0;}#pragma pack()运行结果:24
24 = 4+10+8+1+1
- C语言中字符对齐(内存对齐)问题(测试环境visual studio 2010)
- C语言中内存对齐问题
- c语言中内存字节对齐问题
- c语言内存对齐问题
- C语言中内存对齐
- C中内存对齐问题
- 关于C语言中数据结构的内存对齐问题
- C语言内存中字节对齐问题详解
- C语言结构体中内存对齐问题
- C语言中结构体的内存对齐问题
- c语言解决特殊字符对齐问题
- 解析C语言结构体对齐(内存对齐问题)
- 解析C语言结构体对齐(内存对齐问题)
- 解析C语言结构体对齐(内存对齐问题)
- 解析C语言结构体对齐(内存对齐问题)
- C语言 内存对齐
- C语言内存对齐
- c语言内存对齐
- printf的特殊用法
- 《python tutorial》--python 学习第三天
- No row with the given identifier exists
- rpm安装总结
- iis 访问数据元失败!或出现 xml错误解决方法!
- C语言中字符对齐(内存对齐)问题(测试环境visual studio 2010)
- 分组报文,协议和Socket的概念
- activePDF Toolkit使用教程:如何添加书签
- Android开发笔记3:Service基础
- 交换排序法,进行int类型数组升序的排列
- 浅谈Android五大布局
- 字节和字符,对信息进行编码
- 全民内核-配置4
- Android单元测试初探——Instrumentation