如何计算对象或者类型所占的内存字节数(各种总结)

本文详细介绍了C/C++中的sizeof运算符,包括其用法、基本类型、指针、数组以及结构体的sizeof计算。在32位系统中,基本类型如int为4 bytes,double为8 bytes。指针的sizeof结果为4 bytes。数组的sizeof是其元素占用的总字节数。对于结构体,sizeof不仅考虑成员大小,还涉及内存对齐,导致实际大小可能大于成员总和,并可能包含填充字节。
摘要由CSDN通过智能技术生成

总结一下将sizeof用于各种类型对象或类型时其结果的算法。

1、认识sizeof

sizeof是C/C++中的一个operator,其作用就是返回一个对象或者类型所占的内存字节数(byte)。返回值是size_t,在头文件stddef.h中定义。

2、用法

sizeof的用法有一下3种:

(1)sizeof(object);//即sizeof(对象)

(2)sizeof(type_name);//即sizeof(类型名,如int,char...etc)

(3)sizeof object;//即sizeof 对象

例如:

int i;
sizeof(i);
sizeof(int);
sizeof i;
sizeof int; //error!!!

【注】:

(1)实际上sizeof计算对象的大小也是转换成对象类型来计算的,that is to say:对同类型的不同对象使用sizeof操作,得到的值是一样的。

(2)关于上面第(1)个表达式中的object,其可以延伸至一个unary-expression(一元表达式),例如:

sizeof(2); //相当于sizeof(int)
sizeof(2+4.55); //相当于sizeof(2.0+4.55),从而相当于sizeof(double)

(3)sizeof可以对函数调用求值,就相当于对该函数的返回值类型求sizeof。

char foo()
{
	cout<<"foo函数被调用!"<<endl;
	return 'a';
}//函数
int foo_size;
foo_size=sizeof(foo());//相当于求sizeof(char)

(4)sizeof的计算发生在编译时刻,所以它可以被当作常量表达式使用。

例如:

char ary[ sizeof( int ) * 10 ];  //ok~~~

3、各种sizeof计算

(1)基本数据类型的sizeof(C++primer中叫内置类型),如:int,char,double,float,short,long

在32位计算机中,各种内置类型所占的字节数如下:

char-------------1bytes;

short------------2bytes;

int----------------4bytes;

long--------------4bytes;

float--------------4bytes;

double-----------8bytes;

long double----8bytes;

(2)指针数据类型的sizeof

指针记录了另一个对象的地址,即指针变量是用来存放地址数据的,那么其当然等于计算机地址总线的宽度了。所以在32位计算机中,无论指针p指向何种类型的数据对象,其sizeof结果肯定为4bytes。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值