C++对象内存分布
来源:互联网 发布:SQL未提交行1中的数据 编辑:程序博客网 时间:2024/05/20 00:16
1,没有父类,没有虚函数。完全和结构体内存分布相同,顺序按照各个成员的声明顺序,需要考虑内存对齐(PS:不同编译器的对齐策略部相同,所以一个dll中声明的对象在外面未必可用,因为类成员访问本质是按照偏移量访问,不同内存对齐方式会导致偏移量不同,解决方法是所有dll产生的对象的访问都应该交由dll导出的函数处理)。空间大小为各个成员的大小之和。
2,没有父类,有虚函数。第一个成员为虚表地址,下面的内存分布和1相同。空间大小为各个成员大小之和加4。
3,一个父类,父类有虚函数。顺序依次是虚表地址,父类成员,类成员。空间大小为父类大小加上类成员大小。
4,一个父类,父类没有虚函数,类有虚函数。顺序依次是虚表,父类成员,类成员。空间大小为父类大小之和加上类成员大小加上4。
5,一个父类,父类没有虚函数,类没有虚函数。顺序依次是父类成员,类成员。空间大小为父类大小加上类成员大小。
6,多个父类,存在父类有虚函数。顺序依次是虚表地址,父类1成员(父类1本身有虚函数),有虚函数的父类,没有虚函数的父类,类成员。父类的分布规则是由虚函数的父类在前面,没有虚函数的父类在后面,同等类比父类(有虚函数和没有虚函数)安装声明顺序分布。空间大小为各个父类大小加上类成员大小。
7,多个父类,父类都没有虚函数,类有虚函数。顺序依次是虚表地址,各个父类成员(按照声明顺序),类成员。空间大小为各个父类大小之和加上类成员大小加上4。
8,多个父类,父类都没有虚函数,类没有有虚函数。顺序依次是各个父类成员(按照声明顺序),类成员。空间大小为各个父类大小之和加上类成员大小。
- C++ 对象内存分布
- C++对象内存分布
- C++对象 内存分布
- C语言内存分布
- C程序内存分布
- C/C++内存分布
- c程序内存分布
- C 的内存分布
- C内存分布
- C内存分布
- C内存分布
- c内存分布
- c程序内存分布
- c 内存分布管理
- C语言内存分布
- C内存分布详解
- C语言内存分布
- MyC++之类对象内存分布
- CodeIgniter core/lang.php
- mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法
- oracle重启与关闭
- 参考文章
- 清空ArrayList数组的值
- C++对象内存分布
- Android 下使用 JSON 实现 HTTP 请求
- Android:getApplicationContext()、Activity.this、 getBaseContext()区别
- 笔记之文件扩展名对应的文件类型查询
- 题目1075: 特殊乘法
- eh浏览器
- 代理(Proxy)模式
- ExtJs日期时间选择控件(精确到秒)
- 三 关联式容器(二)map和multimap