C++类所占空间总结
来源:互联网 发布:酷狗音乐数据异常 编辑:程序博客网 时间:2024/06/16 00:09
1.空类可以实例化,且所占空间为一。原因:编译器想为每个实例化对象分配一个独一无二的内存地址。
2.类中有虚函数,则无论类中有几个虚函数,类所占空间加4。原因:类中存放一个4字节的虚指针指向虚函数列表,虚指针存放在最开始的内存数据中,即在其他成员变量之前。(所有虚函数都在虚函数列表中,虚指针用来指定虚函数在虚函数列表中的入口,虚函数列表的每一项存储一个虚函数的地址);
3.类中的静态变量不占类的存储空间,非静态变量按对齐后的大小计算总值(默认对齐为4)。原因:静态变量存储在全局/静态变量区中,静态变量不属于任何一个类。
4.类的成员函数不占内存,类只是一个类型定义,不占内存,类的对象实例化后才占内存。但是都可以通过类/对象名查看所占内存大小。原因: (摘抄) 成员函数还是以一般的函数一样的存在。a.fun()是通过fun(a.this)来调用的。所谓成员函数只是在名义上是类里的。其实成员函数的大小不在类的对象里面,同一个类的多个对象共享函数代码。而我们访问类的成员函数是通过类里面的一个指针实现,而这个指针指向的是一个table,table里面记录的各个成员函数的地址(当然不同的编译可能略有不同的实现)。所以我们访问成员函数是间接获得地址的。所以这样也就增加了一定的时间开销,这也就是为什么我们提倡把一些简短的,调用频率高的函数声明为inline形式(内联函数)。
5.子类的大小,为自身非静态成员变量的大小加上父类的大小(与继承方式无关),在内存中,父类存储在子类之前。子类与父类共享一个虚指针,若父函数与子函数都有虚函数,则虚函数总大小为4。
0 0
- C++类所占空间总结
- C语言数据类型所占空间大小
- 类所占内存空间总结
- C++类的所占空间
- C和C++的数据类型所占的空间
- c/c++ uion和struct所占空间大小
- C++中的类所占内存空间总结
- C++中的类所占内存空间总结
- C++中的类所占内存空间总结
- C++中的类所占内存空间总结
- C++中的类所占内存空间总结
- C++中的类所占内存空间总结
- C++中的类所占内存空间总结
- C++中的类所占内存空间总结
- C++中的类所占内存空间总结
- C++中的类所占内存空间总结
- C++中的类所占内存空间总结
- C++中的类所占内存空间总结
- HDU 2149 Public Sale
- OWNCLOUD源码改动分析---登录模块
- ubuntu15.04安装chrome
- 【LeetCode】(231)Power of Two(Easy)
- Convert QWERTY to Dvorak (字符串)
- C++类所占空间总结
- 一个可以即插即用的MD5加密签名方式
- 字符串中的转义字符与字符串的长度
- 关于UIScreen的applicationFrame和bounds方法区别
- 输入n个整数,输出其中最小的k个
- CSU 1507 超大型LED显示屏
- log4j写日志到特定文件夹
- Android 时间格式化符号HH无法识别
- Android常见的几个控件(TextView,EditText,Button)