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

菜鸟求助!!关于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.****.net/liufei_learning/article/details/5343977