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

一个求类对象大小的有关问题

2012-03-23 
一个求类对象大小的问题#include iostream.hclassBase{public:intxintyinth[2]characharb[3]charc[

一个求类对象大小的问题
#include <iostream.h>
class   Base
{
public:
int   x;
int   y;
int   h[2];
char   a;
char   b[3];
char   c[1];
};
void   main()
{
Base   dd;
cout   < <   sizeof(dd)   < <   endl;
}
为什么结果输出为24?请解释详细些




[解决办法]
google “对齐”
[解决办法]
http://community.csdn.net/Expert/topic/5449/5449612.xml?temp=.5474817
[解决办法]
感觉上是这样的,内存是这样分配的,按照32比特也就是4字节作为一个单位,这样的话,对于一个int类型的来说就直接占据了一行,但是对于一个char类型的它只占据一个字节,假设某一行有了一个char,又来了一个int,为了处理方便,应该重新用一个单位来存取。可以通过下面来证明
class try
{ char c;};
class trytoo
{ char c; int n;};
会发现try为1,下面的确是8,
那么对于这个base类,又前面的4个int占了4×4=16字节,对于下面的5个char要占用两个单位也就是8个字节,总共24个字节

[解决办法]
class Base1
{
public:
int x;
int y;
int h[2];
char a;
char b[3];
char c[1];
char reserve[3];
};
sizeof(..) 24

热点排行