c++ 基础5、关于sizeof的用法

c++ 基础5、关于sizeof的用法,第1张

c++ 中关于 sizeof 用法有好多示例,用来计算变量的大小

1、c++ 中变量的大小 

   变量大小的按自定义类型或数组大小作为实际大小

#include 
#include 
#include 

int main()
{
	int a = 10;
	char buf[10];
	std::cout << "size var:" << sizeof(a) << std::endl;
    std::cout << "size buf:" << sizeof(buf) << std::endl;
}

2、c++ 中类大小

包含空类、虚函数、继承大小计算,由此可以得到空类的大小为1个字节、如果类中存在虚函数则类中包含虚函数指针,因此大小为4个字节,如果在继承类型且是普通继承的话,类的大小为父类和子类成员变量的大小,如果是虚函数继承,则在32位中虚函数指针4字节,64位中虚函数指针8字节。

#include 
#include 
#include 

class test {

};

class test_virtual{
public:
	test_virtual() = default;
	virtual void fun() {};
	virtual ~test_virtual() {
	}
};

class MyClass:public virtual test_virtual
{
public:
	virtual void my_func() {

	}
	MyClass()=default;
	~MyClass()=default;
};

int main()
{
	std::cout << "sizeof class :" << sizeof(test) <<" test_virtual:"<

3、Union 的sizeof 计算

Union 联合体,一般计算最长数据类型的大小,但是要注意一点的是数据在内存当中的字节对齐优化,计算的方式:联合体中最长变量的字节数必须可以整除最长变量类型!

在 MyUnion 中最长的变量类型int 是4字节,最长的变量字节数为 4字节,所以 sizeof(MyUnion)=4

在MyUnion_2 中最长的变量类型int 是4字节,最长的变量字节数为 16字节,所以 sizeof(MyUnion_2 )=16

#include 
#include 
#include 

union MyUnion
{
	char i;
	int len;
};

union MyUnion_2
{
	char va[9];
	int len[4];
	char i;
};

int main()
{
	std::cout <<";MyUnion size:"<

4、sizeof 和 strlen 的区别

int main()
{
	int a = 10;
	char buf[10];
	std::string str = "hello";
	std::cout << strlen(str.c_str()) << std::endl;
	std::cout << "size var:" << sizeof(a) << "strlen buf:"<

由于本人经验有限制,如有问题,欢迎修正

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/2889708.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-09-14
下一篇2022-09-14

发表评论

登录后才能评论

评论列表(0条)