当前位置:网站首页>C语言联合体union占用空间大小问题
C语言联合体union占用空间大小问题
2022-08-05 05:16:00 【Mr.Fu!】
C语言联合体union占用空间大小问题
联合体占用空间大小要遵循两个原则:
- 大小要足够容纳下所有成员的大小,也就是找到占用空间最大的元素
- 占用空间最大的元素大小要可以被所有共用体成员类型整除开
- 如果元素大小不可以被共用体某一个成员的类似整除开,必须添加空白自己,直到可以被共用体所有成员类型整除开。
例:
Union U1{
Char a[9]; //占用9字节
Int b; // 占用4字节
Double c; //占用8字节
}
此时共用体大小为16,其中最大占用空间为9,其各成员类型占用空间为1,4,8,但是此时9无法整除4,8,所以必须添加空白字节,将大小添加为16,既可以整除1,4,8。
Union U2{
Char a[7];//占用7字节
Int b; //占用4字节
Double c; //占用8字节
}
此时共用体占用大小8字节,其中最大占用空间为8,其各成员类型占用空间大小为1(7),4,8,所以8可以被1,4,8整除,所以大小为8.
Union U3{
Char a; //占用1字节
Int b[3]; //占用12字节
Double c; //占用8字节
}
此共用体占用空间大小为16,最大占用空间为12,其各成员类型占用空间大小围殴1,4(3),8,此时12无法整除8,所以添加空白字节,添加到16,此时可被所有类型整除,所以大小为16.
边栏推荐
猜你喜欢
原来何恺明提出的MAE还是一种数据增强
解决:Unknown column ‘id‘ in ‘where clause‘ 问题
spingboot 容器项目完成CICD部署
【论文精读】Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation(R-CNN)
flink部署操作-flink standalone集群安装部署
Flink EventTime和Watermarks案例分析
如何停止flink job
Thread handler handle IntentServvice handlerThread
盘点关于发顶会顶刊论文,你需要知道写作上的这些事情!
【零基础开发NFT智能合约】如何使用工具自动生成NFT智能合约带白名单可Mint无需写代码
随机推荐
网工必用神器:网络排查工具MTR
A deep learning code base for Xiaobai, one line of code implements 30+ attention mechanisms.
CH32V307 LwIP移植使用
网络ID,广播地址,掩码位数计算
[Kaggle project actual combat record] Steps and ideas sharing of a picture classification project - taking leaf classification as an example (using Pytorch)
IJCAI 2022|边界引导的伪装目标检测模型BGNet
面向小白的深度学习代码库,一行代码实现30+中attention机制。
[Database and SQL study notes] 8. Views in SQL
2022年中总结关键词:裁员、年终奖、晋升、涨薪、疫情
拿出接口数组对象中的所有name值,取出同一个值
如何停止flink job
【数据库和SQL学习笔记】5.SELECT查询3:多表查询、连接查询
【Multisim仿真】直流稳压电源设计报告
11%的参数就能优于Swin,微软提出快速预训练蒸馏方法TinyViT
RecycleView和ViewPager2
[After a 12] No record for a whole week
Facial Motion Capture 调研
神经网络也能像人类利用外围视觉一样观察图像
flink项目开发-配置jar依赖,连接器,类库
MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA