java基础单位

java基础单位一个空的 class 在内存中多少字节 如果加入一个成员函数后是多大 这个成员函数存储在内存中什么部分 一个 Class 对象需要占用多大的内存空间 最权威的结论是 非静态成员变量总合 加上编译器为了 CPU 计算 作出的数据对齐处理 加上为了支持虚函数 产生的额外负担 介绍完了理论知识后 再看看再找一个例子看看 注 一下所有结果都是在 VC6 0 开发环境中得出的结论 一

大家好,我是讯享网,很高兴认识大家。



一个空的class在内存中多少字节?如果加入一个成员函数后是多大?这个成员函数存储在内存中什么部分?

  一个Class对象需要占用多大的内存空间。最权威的结论是:
*非静态成员变量总合。
*加上编译器为了CPU计算,作出的数据对齐处理。
*加上为了支持虚函数,产生的额外负担。

介绍完了理论知识后,再看看再找一个例子看看(注:一下所有结果都是在VC6.0 开发环境中得出的结论)

  一、空类的Size

输出结果:Class Car Size:1

二、只有成员变量的Size

讯享网

输出结果:Class Car Size:8

这个结果很多开发人员都清楚。在32位系统中,整型变量占4个字节。这里Class Car中含有两个整型类型的成员变量,所以Class Size是8。

  三、有静态成员变量的Size

 

输出结果:Class Car Size:8

我们这次在Class Car中添加了一个静态成员变量,但是Class Size仍然是8个字节。这正好符合了,结论中的第一条:非静态成员变量总合。

四、有字符型变量(char)的Size

讯享网

输出结果:Class Car Size:12

五、只有成员函数的Size

 

输出结果:Class Car Size:1

噢,这是怎么回事儿呢?再做一个实验看看。

六、有成员函数和成员变量的Size

 

输出结果:Class Car Size:8

这次应该很清楚的了。函数是不占用类空间的。第一个例子中的Size为1个字节,正是编译器为类创建一个隐含的一个字节的空间

七、有虚函数(virtual)的Size

java基础单位

 

输出结果:Class Car Size:4

这次,让析构函数为虚函数,看到了Class Size为4。这正是指向Virtual Table的指针vptr的Size。这正好符合了,结论中的第三条:加上为了支持虚函数,产生的额外负担。

小讯
上一篇 2024-12-24 08:30
下一篇 2024-12-29 19:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/7739.html