sizeof 32位和64位操作系统的区别

32位和64位操作系统各类型sizeof大小

1) 32位操作系统

在这里插入图片描述

2) 64位操作系统

在这里插入图片描述

3) 常见的类型sizeof大小

空类:
C++编译器强制给这种类插入一个缺省成员,长度为1;
如果有自定义的变量,变量将取代这个缺省成员。

class A
{ 
};

cout<<sizeof(A); // 输出1

只有一个char型

class A
{
	char c;
};

cout<<sizeof(A); // 输出1

有5个char型

class A
{
	char a,b,c,d,e;
};

cout<<sizeof(A); // 输出5

一个char型 + 一个int型:字节对齐

class A
{
	char c;
	int a;
};

cout<<sizeof(A); // 输出8

2个char型 + 一个int型

class A
{
	char c,d;
	int a;
};

cout<<sizeof(A); // 输出8

5个char型 + 一个int型

class A
{
	char c,d,e,f,g;
	int a;
};

cout<<sizeof(A); // 输出12

1个char型 + 1个int型 + 2个char型

class A
{
	char c;
	int a;
	char d,e;
};

cout<<sizeof(A); // 输出12

普通函数不占空间

class A
{
	void B(){ int d; }// 0Byte
	int C(){};
};

cout<<sizeof(A); // 输出1,等同于空类

虚函数 占4个字节:指向虚函数表的指针

class A
{
	virtual void C(){}
};

cout<<sizeof(A); // 输出4

多个虚函数等同于1个虚函数

class A
{
	virtual void C(){}
	virtual void D(){}
};

cout<<sizeof(A); //输出4

多继承问题中sizeof

class b{};
class c :public b
{
	virtual void fun() = 0;
};

class d :public b ,public c{};
cout<<sizeof(d); // 输出8,字节对齐(b+c)

单继承问题中sizeof

class b{};
class c :public b
{
	virtual void fun() = 0;
};

class d :public c{};
cout<<sizeof(c); //输出4
cout<<sizeof(d); //输出4

静态数据成员 和 成员函数 不占空间

class A
{
	static int a;
	static int b(){};
};

cout<<sizeof(A); //输出1

const数据变量占空间 和 const成员函数不占空间

class A
{
public:
	const int b;
	const int c;
	virtual void f(){}
	int d() const{}
	int e() const{}
	virtual void g(){}
};

cout<<sizeof(A); // 输出12= 4+4+4(多个虚函数算一个)

4) 总结

  • 不占空间的有:普通函数,静态数据成员,静态成员函数;
  • 无论多少个,只相当于一个所占的空间:虚函数;
  • 空类占1个字节;
  • 既有字符型又有整型,要考虑字节对齐;
  • 普通数据成员、const数据成员占空间;静态成员不占空间。
  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kevin_org

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值