一个求类对象大小的问题
#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