一个sizeof()的问题.

一个傻冒 2003-12-07 11:12:14
前不久写了一个类.
class A{
private:
int a;
char b;
};
用sizeof(A)输出时发现大小为8个字节.这是怎么回事?
...全文
75 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
一个傻冒 2003-12-07
  • 打赏
  • 举报
回复
伙计,我也想过可能是数据对齐的问题.不过一直得不到验证.谢谢.
relaxyc 2003-12-07
  • 打赏
  • 举报
回复
我只知道这是字节对齐的问题,整个结构体所占的空间必须是其中最大的一个数据成员所占空间的倍数。如上面a:4,b:1,就占8个字节。
深层的还是请高手解答吧!
帮你顶一下!
glacierrr 2003-12-07
  • 打赏
  • 举报
回复
边界对齐的老问题了
redhat_xu 2003-12-07
  • 打赏
  • 举报
回复
不知楼主说的是什么意思!
nirvana_li 2003-12-07
  • 打赏
  • 举报
回复
赞同tiarts(帝耳寺)的.楼主还可以参考以下<深入C++对象模型>前2章.
tiarts 2003-12-07
  • 打赏
  • 举报
回复
为了能使聚集体能更有效率地在内存中被存取,一般聚集体的结构大小会受到Alighnment的限制。
alignment 就是将数值调整到某数的整数倍,在32位计算机上,通常alignment为4bytes(32位),以使bus的运输量达到最高效率。
按上看,a是int,占4bytes,b是char,占1bytes,另由于alignment的限制,还需加上3bytes,共8bytes, 应该没错吧,请高手指教!!!
liquanle 2003-12-07
  • 打赏
  • 举报
回复
书上说的是除了数据对齐的问题耗费空间,就可以说类所占用空间就会是类成员数据总空间之和。
blue 2003-12-07
  • 打赏
  • 举报
回复
搜索以下老帖子吧~!

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧