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而由内部产生的任何额外负担.

     

        

  • 相关阅读:
    2012.05.17
    一些记录
    2012.09.09 js
    2012.05.24 jq Tab
    2012.10.08 关于 开发计划制定、项目管理、功能设计 的想法记录
    2012.05.21 jq Tab
    关于工作状态
    ImageWaterMark参数说明
    关于拼接邮件在存储过程中
    关于使用HtmlAgilityPack
  • 原文地址:https://www.cnblogs.com/sixue/p/4046168.html
Copyright © 2011-2022 走看看