位域所占空间的大小
来源:互联网 发布:汽车设计软件发展趋势 编辑:程序博客网 时间:2024/05/22 04:23
上一个项目中,遇到了一个问题:数据通过网络传输到不同的操作系统,反序列化时出现了segment fault。调试时发现原来是同一个结构体,在不同的操作系统(windows和linux)中,所占的空间大小不一样,因此反序列化时就出现了问题。这个结构体是类似如下定义的:
struct Test{char a : 2,int b : 3,};默认情况下,gcc编译器下,结构体大小为4个字节,在vc++编译器下,它的大小却是8个字节。最初,我以为是字节对齐导致两个编译器下,结构体大小的不同。然而当我改变其字节对齐的大小时,发现结构体大小仍然不一样。观察了这个结构体的定义,进行了如下改变:
struct Test{char a : 2,char b : 3,};此时,再在两个编译器下尝试,结构体大小相等。因此,就可以得出结论,在gcc编译器下,相邻位域的空间大小是可以合并的,即使它们类型不同;而vc++环境下,如果相邻位域类型不同,那么他们分别按照最大位域所占的字节数对齐。
0 0
- 位域所占空间的大小
- 32位电脑“内置类型"所占空间大小
- 如何查看用户表所占空间的大小
- 如何查看用户表所占空间的大小
- 在SQL中查看表所占的空间大小
- 查看Sql表所占空间的大小
- iphone中得到字符串所占空间的大小
- C++中类对象所占空间的大小
- 结构体所占空间大小的运算
- C++中类对象所占空间的大小
- C++中类对象所占空间的大小
- C++中类对象所占空间的大小
- C++中类对象所占空间的大小
- 数据库的表所占空间大小因素
- 查询oracle大字段所占空间大小的sql
- 32位与64位系统各个变量所占空间大小
- linux目录所占空间大小
- 分析对象所占空间大小
- LeetCode(81) Search in Rotated Array II
- java记——随机数
- [MFC]CView视图类、CMainFrame主框架类
- 怎样提高自己的工作饱和度
- MYSIAM表 并发插入
- 位域所占空间的大小
- RUBiS安装——Servlet 配置
- ListView.SimpleAdapter笔记
- Spring IoC 详解(下篇)
- hdu 3336 KMP之杭电next灵魂
- 集中式vs分布式
- docker entry
- unix编程实训教程之 more(觉醒篇一 Begin)
- 让VC、BCB支持C99的整数类型(stdint.h、inttypes.h)(兼容GCC)