社区
C++ 语言
帖子详情
sizeof union 类型
fairchild811
2009-07-29 08:59:17
typedef union {double i; int k[5]; char c;} DATE2;
为什么sizeof(DATE2) 是 24. union的大小也需要用内存对齐来计算吗
24是8的倍数?
...全文
309
15
打赏
收藏
sizeof union 类型
typedef union {double i; int k[5]; char c;} DATE2; 为什么sizeof(DATE2) 是 24. union的大小也需要用内存对齐来计算吗 24是8的倍数?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zzcmx2008
2009-07-30
打赏
举报
回复
[Quote=引用 10 楼 billow_zhang 的回复:]
对齐是对应于所有的数据存放的地方.union当然需要对齐,这有什么可怀疑的吗?只不过, union由于多种数据类型占据同样的内存空间,它更要求满足其中所有的大小和对齐的要求.
例如,此例:最大的数据空间是20个字节,但其中有double类型,所以需要按照double类型对齐,对于那些double按8字节对齐的,最小的大小应该是24字节, 对于double按照4字节对齐的,应该就是20个字节.
[/Quote]
顶
ysysbaobei
2009-07-30
打赏
举报
回复
顶下
Cloud__Apex
2009-07-30
打赏
举报
回复
对齐
cmkyec
2009-07-30
打赏
举报
回复
mark
Damn_boy
2009-07-29
打赏
举报
回复
硬件的问题,所以要内存对齐
billow_zhang
2009-07-29
打赏
举报
回复
对齐是对应于所有的数据存放的地方.union当然需要对齐,这有什么可怀疑的吗?只不过, union由于多种数据类型占据同样的内存空间,它更要求满足其中所有的大小和对齐的要求.
例如,此例:最大的数据空间是20个字节,但其中有double类型,所以需要按照double类型对齐,对于那些double按8字节对齐的,最小的大小应该是24字节, 对于double按照4字节对齐的,应该就是20个字节.
wanjingwei
2009-07-29
打赏
举报
回复
mark
pengzhixi
2009-07-29
打赏
举报
回复
按double对齐,并且内存按最大的值int k[5] 5*4=20计算。
superbtl
2009-07-29
打赏
举报
回复
字节最长的对齐 int k[5]; 就是24了
zgjxwl
2009-07-29
打赏
举报
回复
union 也会字长对齐的。
musiclee
2009-07-29
打赏
举报
回复
学习学习
fuzzy_man
2009-07-29
打赏
举报
回复
只可能是字节对齐造成的
应该与结构体一样,与其中的元素的最大单位对齐。即里面有元素是double的话,最后的大小肯定是8的倍数。
liao05050075
2009-07-29
打赏
举报
回复
http://www.51testing.com/?uid-165588-action-viewspace-itemid-76679
xylicon
2009-07-29
打赏
举报
回复
union 和 struct 一样都需要内存对齐吧。
lori227
2009-07-29
打赏
举报
回复
嗯 ~~要内存对齐的~~!
sizeof
()计算
本文主要介绍了
sizeof
()计算各类数据
类型
大小的方法,包括基本
类型
、结构体、数组、
union
、位域结构、类和对象等。还对比了
sizeof
与strlen的区别,并给出相关计算示例。此外,解答了
sizeof
相关的题目,如设计计算数组长度的宏,明确
sizeof
是编译时计算的操作符。
C++中常见数据
类型
的
sizeof
值,以及计算struct和
union
的详细方法
本文详细解析了C++中结构体与联合体的内存占用计算方法,包括结构体成员对齐规则及填充原理,并通过示例程序展示了不同数据
类型
在内存中的实际占用情况。
关于
sizeof
求struct和
union
长度的问题
本文深入解析C/C++中struct和
union
类型
在Windows平台(Visual Studio环境)下的
sizeof
计算规则,重点涵盖字节对齐机制、最大成员
类型
对齐基准、空结构体处理、含数组及嵌套结构/联合体等典型场景,纠正常见误解,强化底层内存布局认知。
union
的
sizeof
()问题
本文探讨了C++中
union
类型
的
sizeof
()行为。通过不同
union
结构体的例子,解释了内存对齐如何影响
union
的实际大小,特别是当涉及到多种数据
类型
时的情况。
C语言学习第11篇-
union
enum,
sizeof
, typedef 分析
本文详细介绍了C语言中的
union
、enum、
sizeof
和typedef的概念与应用。
union
用于内存共享,节省空间,特别是对于嵌入式系统;enum创建自定义整型常量;
sizeof
计算
类型
或变量的内存大小,编译时确定;typedef则是为已存在
类型
创建别名,但不创建新
类型
。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章