内存对齐的讲解请参考:
点击打开链接
#include <iostream>
using namespace std;
int main()
{
/*
*空类,类中没有变量也没有函数
*占用内存:1个字节
*原因:C++要求每个实例在内存中都有独一无二的地址,地址长度为1,所以结果为1
*/
class EmptyClass
{
};
cout<<sizeof(EmptyClass)<<endl;
/*
*有一个整形变量
*占用内存:4个字节
*原因:整形长度为4
*/
class IntClass
{
int i;
};
cout<<sizeof(IntClass)<<endl;
/*
*有一个字符型变量
*占用内存:1个字节
*原因:字符型长度为1
*/
class CharClass
{
char a;
};
cout<<sizeof(CharClass)<<endl;
/*
*有一个双精度浮点型变量
*占用内存:8个字节
*原因:字符型长度为8
*/
class DoubleClass
{
double d;
};
cout<<sizeof(DoubleClass)<<endl;
/*
*有一个整形和一个字符型
*占用内存:8个字节
*原因:内存对齐问题
*/
class Int_CharClass
{
int i;
char a;
};
cout<<sizeof(Int_CharClass)<<endl;
/*
*有一个整形和一个双精度浮点型
*占用内存:16个字节
*原因:内存对齐问题
*/
class Int_DoubleClass
{
int i;
double d;
};
cout<<sizeof(Int_DoubleClass)<<endl;
/*
*有一个字符型,一个整形和一个双精度浮点型
*占用内存:16个字节
*原因:内存对齐问题
*/
class Char_Int_DoubleClass
{
char a;
int i;
double d;
};
cout<<sizeof(Char_Int_DoubleClass)<<endl;
/*
*有一个字符型,一个整形,一个双精度浮点型和一个字符型
*占用内存:24个字节
*原因:内存对齐问题
*/
class Char_Int_Double_CharClass
{
char a;
int i;
double d;
char a1;
};
cout<<sizeof(Char_Int_Double_CharClass)<<endl;
/*
*占用内存:16个字节
*原因:内存对齐问题
*/
class Myclass
{
EmptyClass e;
CharClass c;
IntClass i;
DoubleClass d;
};
cout<<sizeof(Myclass)<<endl;
}
内存对齐的讲解请参考:
点击打开链接