• C++内存对象布局


    本章主要介绍了c++类中成员变量、函数对象的在内存中布局.

        当c++类中不包含virtual机制类的函数时,内部nostatic member被包含在每一个class object之中,就想c struct一样,而member function虽然含在class声明之内,却不出现在object之中,每一个non-inline function只会诞生一个函数体。

         c++内存上的布局以及存取时间主要的额外负担是由virtual引起的,包括:

    •   virtual function 机制 用以支持一个有效率的"执行期绑定"(runtime binding).
    •   virtual base class    用以实现"多次出现在继承体系中的base class,有一个单一而被共享的实体.
    class Point{
    public:
           Point(float xval);
           virtual ~Point();
           
           float x() const;
           static int PointCount();
    protected:
           virtual ostream& print(ostream& os) const;
           float _x;
           static int _point_count;
    };

    (1)c++对象模型

      内存布局

     一个对象需要多少内存才能表现一个class object的大小:

    •   nonstatic data members的总和大小
    •   加上任何由于alignment的需求而填补上去的空间.
    •   加上为了支持virtual而由内部产生的任何额外负担.

     

        

  • 相关阅读:
    潜入ICU的四逆汤
    经方医的视角
    黄连解毒汤治疗月经过多
    柳暗花明又一方
    PHP 相关性系数计算
    备忘-VSCODE、apache配置
    c# 基于文件系统实现的队列处理类
    notepad++ 快速运行PHP代码
    dat.gui stats.js 通用参数配置及图像统计工具
    AutoHotkey 自动化脚本工具实例
  • 原文地址:https://www.cnblogs.com/sixue/p/4046168.html
Copyright © 2020-2023  润新知