使用sizeof计算类的大小
发布网友
发布时间:2022-10-05 15:37
我来回答
共5个回答
热心网友
时间:2023-10-19 13:17
类的sizeof大小一般是类中的所有成员的sizeof大小之和,这个就不用多说。
不过有两点需要注意:1)当类中含有虚成员函数的时候,例如:
class B
{
float a;
public:
virtual void fun(void);
}
此时sizeof(B)的大小为8,而不是4。因为在类中隐藏了一个指针,该指针指向虚函数表,正因为如此,
使得C++能够支持多态,即在运行时绑定函数的地址。
2)另一个要注意的是,当类中没有任何成员变量,也没有虚函数的时候,该类的大小是多少呢?
例如:
class B2
{
void fun(void);
}
此时sizeof(B2)的值是多少呢?在C++早期的编译器中,这个值为0;然而当创建这样的对象时,
它们与紧接着它们后面的对象有相同的地址。比如:
B2 b2;
int a;
那么对象b2与变量a有相同的地址,这样的话对对象b2地址的操作就会影响变量a。所以在现在大多数编译器中,该值的大小为1。
如果有虚函数,则sizeof值为类的数据成员的大小加上VTBL(指针,4字节),再加上其基类的数据成员的大小。如果是多重继承,还得加上各基类的VTBL。
这个问题很麻烦.. 下面有更详细的自己看下
http://rkfang.cnblogs.com/archive/2004/10/10/50599.aspx
热心网友
时间:2023-10-19 13:18
class 1 2 3 4 5 6 7 8 东南西北中发白 十三幺
热心网友
时间:2023-10-19 13:18
多重继承,太烂了,C++里最烂的东西。
除了这个,以上的都还可以理解。
还有,sizeof如果不用在内存分配上,基本没什么用了。
比如malloc(n*sizeof(t))
又因为C++已经可以用new x[y]这种语法,根本用不上sizeof了
热心网友
时间:2023-10-19 13:19
眼花啊,类的特性很难啊
热心网友
时间:2023-10-19 13:20
这个,楼主太厉害了看的我眼都花了
使用sizeof计算类的大小
类的sizeof大小一般是类中的所有成员的sizeof大小之和,这个就不用多说。不过有两点需要注意:1)当类中含有虚成员函数的时候,例如:class B { float a;public:virtual void fun(void);} 此时sizeof(B)的大小为8,而不是4。因为在类中隐藏了一个指针,该指针指向虚函数表,正因为如此,使得C++...
利用sizeof函数计算c语言各种数据类型所占用的空间?
在 C 语言中,可以使用 sizeof 运算符来计算不同数据类型所占用的空间大小。sizeof 运算符的语法格式如下:sizeof(type)其中,type 是数据类型,可以是 int、char、float、double、struct、union 等等。下面是常见数据类型在 64 位系统中所占用的空间大小:char:1 字节 short:2 字节 int:4 字节 ...
sizeof是求什么的?
sizeof是计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示(当然用在字符数组计算"\0"的大小)。在32位的系统中,sizeof(int)的值为4。如果x是int型的数组,则sizeof(x)/sizeof(int)代表x的位数。
sizeof求数组大小
用 sizeof(数组名) 即可。计算结果 是 该数组 占内存的 大小,单位是字节。例如:int x[10];double y[10];int a[4][5];printf("x:%d y:%d a:%d\n", sizeof(x), sizeof(y),sizeof(a));输出: x:40 y:80 a:80 另外,数组有多少个元素,可用 sizeof(数组名)/sizeof(...
c语言详解sizeof
sizeof 是 C 语言中的一种单目操作符,类似于 ++、-- 等操作符,并非函数。它以字节形式给出操作数的存储大小,操作数可以是表达式或括在括号内的类型名。操作数的存储大小由其类型决定。sizeof 的使用方法多样,例如用于数据类型、变量、指针和数组。在用于变量时,大小写形式如 sizeof(var_name) ...
sizeof("\ n")返回多少字节?
sizeof() 不是函数,而是“运算符”,而且是 “一目运算符"它用来计算 “数据类型” 占用的内存大小,单位是字节。例如:sizeof(int), --数据类型 int sizeof(double), -- 数据类型 double sizeof(struct stu), -- 数据类型 结构stu sizeof(int *), --数据类型 整型指针 ...
使用sizeof(S1)获取到得该结构体得大小是多少
4.结构体的大小必须为结构体对齐参数的整数倍;根据上述规则,分析你给出的结构体,假设结构体地址为0x1000 成员变量a的对齐参数为MIN(sizeof(int), 4) = 4,起始地址为0x1000,与结构体地址相同;成员变量b的对齐参数为MIN(sizeof(int), 4) = 4,起始地址为0x1004,与结构体地址的偏移为0x...
sizeof( int)是什么意思?
sizeof是计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示(当然用在字符数组计算"\0"的大小)。在32位的系统中,sizeof(int)的值为4。如果x是int型的数组,则sizeof(x)/sizeof(int)代表x的位数。探究的一般过程是从发现问题、提出问题开始的,发现问题后,根据自己已有的...
sizeof(int)是什么意思?
sizeof(int)=2。比如这里x应该是个int型数组,那么用这个数组的大小,除以int型数据的大小,就得到这个数组的长度。sizeof是计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。在32位的系统中,sizeof(int)的值为4。如果x是int型的数组,则sizeof(x)/sizeof(int)代表x的...
sizeof()是什么意思?
sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位)。char是c语言中基本类型,一般char类型占1个字节。sizeof(char)的结果是,1。sizeof:计算数据类型长度 char = 1 int 2,long 4 int a[6];sizeof (a) 2*6= 12 单位都是字节。float 4 ...