美文网首页
C++内存模型

C++内存模型

作者: 上官宏竹 | 来源:发表于2021-06-16 18:11 被阅读0次

普通成员函数存储方式


C++程序的内存格局通常分为四个区:全局数据区(data area),代码区(code area),栈区(stack area),堆区(heap area)(即自由存储区)。全局数据区存放全局变量,静态数据和常量;所有类成员函数非成员函数代码存放在代码区;为运行函数而分配的局部变量、函数参数、返回数据、返回地址等存放在栈区;余下的空间都被称为堆区。
在类的定义时,类成员函数是被放在代码区,而类的静态成员变量在类定义时就已经在全局数据区分配了内存,因而它是属于类的。对于非静态成员变量,我们是在类的实例化过程中(构造对象)才在栈区或者堆区为其分配内存,是为每个对象生成一个拷贝,所以它是属于对象的。
参考:C++成员函数在内存中的存储方式

单继承

单一的一般继承(多重继承)
单继承

多继承

一般的多继承
多继承的内存布局图

重复继承

重复继承
重复继承的内存布局图

虚单继承

虚单继承内存布局图

虚多继承

虚多继承内存布局图

菱形继承

菱形继承内存布局图
参考:https://blog.csdn.net/haoel/article/details/3081328
参考:https://blog.csdn.net/a3192048/article/details/82259966

相关文章

  • 2018-11-11 #C++ 内存模型#

    C++ 原子操作内存模型 C++ 原子操作内存模型解决并发编程的什么问题? 相信在大多数应用程序员眼里,代码在编辑...

  • C++内存模型

    在讲述内存模型的时候,我们使用下面这段代码来涵盖各种内存分配的情况 这是内存变量图: rodata 和 text ...

  • C++内存模型

    普通成员函数存储方式 C++程序的内存格局通常分为四个区:全局数据区(data area),代码区(code ar...

  • C++内存模型

    内存模型是多线程环境能够可靠工作的基础,因为内存模型需要对多线程环境的运作细节进行完备的定义。 内存模型通过共享数...

  • C++_day06

    C++核心编程 主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓 1. 内存分区模型 C++程序...

  • NDK学习 之 Java对象映射C++对象

    背景 我们都知道Java内存模型和C++内存模型不同,而且是分开存储和管理的。做NDK开发的小伙伴经常遇到这样一个...

  • 开篇2:C/C++ 内存布局与程序栈

    如果你对C/C++基本数据类型的内存模型没概念的话,可以先查看该传送门《开篇1:C/C++ 内存中的数据表示》,反...

  • C++11 Memory Model

    Herb Sutter在一次对C++11内存模型的演讲中提到C++11的内存模型,让C++有了标准独立于编译器和平...

  • C++ 对象内存模型

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

  • C++内存分区模型

    内存分区模型 C++程序在执行时,将程序大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的...

网友评论

      本文标题:C++内存模型

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