首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

初学者!关于sizeof的有关问题

2012-03-13 
菜鸟求助!!关于sizeof的问题刚刚看到一些C++笔试题,然后就试着实践了下,发现自己思考的结果和实际相差很多

菜鸟求助!!关于sizeof的问题
刚刚看到一些C++笔试题,然后就试着实践了下,发现自己思考的结果和实际相差很多,甚为不解,请求各位高手指教。

大致代码如下:
#include <iostream.h>
struct st1 
{
int n ;
double db ;
char *szpC ;
st1* pst1 ;
};

int main()
{
  cout << sizeof(st1) << endl

  return 0 ;
}

个人的思考结果是:
在32为操作系统下,
sizeof(int) = 4 ,sizeof(double)= 8 ,sizeof(char*)= 4 , sizeof(st1*)= 4 
那么,sizeof(st1)= 20 。
但是VC++6.0试了下,发现结果是24。
一时间也想不出个所以然,还请各位不吝指教!!谢谢咯~~~~~~~

[解决办法]
结构体中为字节对齐 往往不同成员中有空隙
[解决办法]
是内存对齐搞得鬼啦...

double是8...其它的都向它靠齐了...

char *和st1 *加起来==8已经对齐了
int就得多加4来对齐了
[解决办法]
都是字节对齐惹的祸。。。楼主可参考百度百科,重点看7. 结构体的sizeof (Why为什么受伤的总是我,呵呵)
http://baike.baidu.com/view/1078660.htm
[解决办法]
字节对齐
[解决办法]
这里说的很详细哦

http://blog.csdn.net/liufei_learning/article/details/5343977

热点排行