C++中的类的成员变量在各种情况下所占用的内存大小

内存对齐的讲解请参考: 点击打开链接
#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;
}
内存对齐的讲解请参考: 点击打开链接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值