| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1391 人关注过本帖
标题:帮我解决一个sizeof的问题
只看楼主 加入收藏
小治
Rank: 2
来 自:安徽
等 级:论坛游民
帖 子:30
专家分:20
注 册:2010-2-18
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:13 
帮我解决一个sizeof的问题
为什么使用sizeof计算的类型和类的空间大小不一样?为什么会多两个字节?
#include<iostream>
using namespace std;
class A
{
private:
  int i;
  short j;
};
int main()
{
  cout<<sizeof(int)<<endl;
  cout<<sizeof(short)<<endl;
  cout<<sizeof(int)+sizeof(short)<<endl;
  cout<<sizeof(A)<<endl;//就是这里不是很清楚
  return 0;
}
希望大家解释一下!谢谢
搜索更多相关主题的帖子: sizeof 
2010-12-10 01:12
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:8 
系统在读一个大小是N的变量时, 如果它的地址是 N 的倍数, 效率是最高的.
为此, 默认情况下, 在结构中, 变量的地址如果不符合上面的规则, 适当往后移.
如果结构中最大是变量是N, 则整个结构的大小也是N的倍数.

如果要改变这种规则可以用下面的设置, 会牺牲效率:
#pragma pack (1)
收到的鲜花
  • Lyone2010-12-10 11:12 送鲜花  2朵   附言:学习了
2010-12-10 09:06
Lyone
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:99
专家分:195
注 册:2010-12-7
收藏
得分:0 
我猜是因为:类除了你定义的两个变量,还包括其他的信息。比如构造函数,和析构函数。
2010-12-10 09:23
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
问题不是猜的  2楼说的很对  确实最大数据类型的整数倍
收到的鲜花
  • Lyone2010-12-10 11:12 送鲜花  1朵   附言:学习了

                                         
===========深入<----------------->浅出============
2010-12-10 11:04
xishui777
Rank: 2
等 级:论坛游民
帖 子:53
专家分:94
注 册:2010-8-17
收藏
得分:0 
学习下
2010-12-10 11:23
qshzh102
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2010-9-14
收藏
得分:0 
就是int占用的空间的整数倍,short占用的空间也是和int的一样的,而不是说实际占用的空间
2010-12-10 14:48
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:2 
2楼 说的就基本正确了。这是所谓内存对齐的问题,目的就是为了提高访问效率。大家有兴趣可以自己去查查 内存对齐。

这个程序也在说明,使用 sizeof 可以提高程序的移植性。不要自己擅自猜测一个结构的大小。
2010-12-10 22:05
DreamSkyCC
Rank: 2
来 自:河北赵县
等 级:论坛游民
帖 子:40
专家分:58
注 册:2010-11-28
收藏
得分:0 
x86四字节对齐!

努力总会有收获!
2010-12-11 09:26
kittel
Rank: 2
来 自:武汉
等 级:论坛游民
威 望:1
帖 子:38
专家分:73
注 册:2010-11-19
收藏
得分:0 
回复 楼主 小治
学习了
2010-12-11 18:11
zgxyz2008
Rank: 4
等 级:业余侠客
帖 子:67
专家分:202
注 册:2008-10-28
收藏
得分:0 
这就是传说中的字节对齐机制~
2010-12-11 19:38
快速回复:帮我解决一个sizeof的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022118 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved