zoukankan      html  css  js  c++  java
  • 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而由内部产生的任何额外负担.

     

        

  • 相关阅读:
    Hihocoder #1014 : Trie树
    Codevs 1298 凸包周长
    洛谷 P1355 神秘大三角(计算几何基础)
    Cogs 1688. [ZJOI2008]树的统计Count(树链剖分+线段树||LCT)
    Poj 2887 Big String(块状数组)
    P1449 后缀表达式
    P3478 [POI2008]STA-Station
    P1533 可怜的狗狗
    P2073 送花
    P1014 Cantor表
  • 原文地址:https://www.cnblogs.com/sixue/p/4046168.html
Copyright © 2011-2022 走看看