C++内存分布

class A{};//1

class B{
public:
	B(){};//no space
	~B(){};//no space

	int function(){};//un-virtual function, nospace
};//1

class C{
public:
	C(){};//no space
	~C(){};//no space

	int function(){};//un-virtual function, nospace
private:
	int i;//4byte
};//4

struct D {
	int a;//4byte
	int (*f)(void);//pointer member, 4byte
};//8

class E {
public:
	E(){};//no space
	~E(){};//no space

	virtual int function(){return 1;};//virtual function, share on virtual-function table, share 4byte with other virtual functions
	virtual int function2(){return 1;};//virtual function, share on virtual-function table, share 4byte with other virtual functions
private:
	int i;//4byte
};//8

class F {
public:
	F(){};//no space
	~F(){};//no space

	static int function(){return 1;};//no space
	virtual int function2(){return 1;};//share 4byte space
	const int function3(){return 1;};//no space
	inline int function4(){return 1;};//no space
	static inline int function5(){return 1;};//no space
};//4

class G {
public:
	G():j(0){};//no space, ATTENTION: no-static member variable could be initialization ONLY in this way!!!
	//AND: no-static member variable must be initial!!!(otherwise you cannot )
	~G(){};//no space

	static int i;//static member, no space
	const  int j;//4 byte
	int k;//4byte
};//8

int main()
{
	printf("sizeof A = %d\n", sizeof(A));
	printf("sizeof B = %d\n", sizeof(B));
	printf("sizeof C = %d\n", sizeof(C));
	printf("sizeof D = %d\n", sizeof(D));
	printf("sizeof E = %d\n", sizeof(E));
	printf("sizeof F = %d\n", sizeof(F));
	printf("sizeof G = %d\n", sizeof(G));
	system("pause");
}
/*
sizeof A = 1
sizeof B = 1
sizeof C = 4
sizeof D = 8
sizeof E = 8
sizeof F = 4
sizeof G = 8
*/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值