美文网首页HTML5 专栏程序员
C++ 对象模型~内存布局

C++ 对象模型~内存布局

作者: 石虎132 | 来源:发表于2018-02-23 10:17 被阅读183次

//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄

一、概念:

1.没有继承情况,vptr存放在对象的开始位置,以下是Base1的内存布局

m_iData :100

2.单继承的情况下,对象只有一个vptr,它存放在对象的开始位置,派生类子对象在父类子对象的最后面,以下是D1的内存布局

B1:: m_iData : 100

B1::vptr :4294800

B2::vptr :4294776

D::m_iData :300

4. 虚拟继承情况下,虚父类子对象会放在派生类子对象之后,派生类子对象的第一个位置存放着一个vptr,虚拟子类子对象也会保存一个vptr,以下是VD1的内存布局

Unknown :4294888

B1::vptr :4294864

VD1::vptr :4294944

VD1::m_iData :200

VD2::Unknown :4294952

VD::m_iData :500

B1::m_iData :100

5. 棱形继承的情况下,非虚基类子对象在派生类子对象前面,并按照声明顺序排列,虚基类子对象在派生类子对象后面

VD1::Unknown : 4294968

VD2::vptr :4294932

VD2::m_iData :300

B1::vptr :4294920

B1::m_iData :100

谢谢!!!

相关文章

  • C++ 对象模型~内存布局

    //联系人:石虎QQ:1224614774昵称:嗡嘛呢叭咪哄 一、概念: 1.没有继承情况,vptr存放在对象的开...

  • NSObject 底层本质

    一、OC 转 C/C++ 二、NSObject 对象内存布局 三、NSObject 内存大小 四、OC 对象内存布...

  • JVM-JMM

    JMM(jvm内存模型) by shihang.mai 对象的内存布局 对象的创建过程class loading-...

  • 图说C++对象模型:对象内存布局详解

    0.前言 文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局、虚表指针、虚基类指针等有深入了解的朋友可...

  • C++ 对象内存布局

    虚函数, 虚基类 同时存在的时候, 对象内存布局的影响。 转自对象内存布局 (16) - CSDN博客 虚基类指针...

  • C++ 对象内存布局

    可能会对 C++ 对象的内存布局产生影响的因素: 对象的数据成员变量 对象的一般成员函数 对象的虚成员函数 对象继...

  • C++ 对象内存模型

    (很久之前写的了,先扔上来 继承 (无虚函数时) 单继承 类的对象的内存布局如下所示: 类中的成员变量的存储顺序从...

  • C++继承模型的内存布局

    下面我以Clang++编译器为例阐述一下C++继承模型的内存布局 对于多继承情况 考虑示例代码 有如下内存布局 首...

  • 深度探索C++对象模型(内存分布, 虚函数表)

    虽然C++面向对象很容易上手, 但是一直对C++对象的底层实现不知甚解, 得益于vs自带cl命令可以查看内存布局,...

  • iOS中OC对象的本质

    一个OC对象在内存中如何布局?以及一个NSObject对象占用多少内存? 我们知道OC的底层语言是c/c++我们平...

网友评论

    本文标题:C++ 对象模型~内存布局

    本文链接:https://www.haomeiwen.com/subject/uxgtxftx.html