当前位置: 首页 > news >正文

政府网站优化栏目建设廊坊seo外包

政府网站优化栏目建设,廊坊seo外包,网站如何做广告,校园网站制作模板一直想搞清楚类对象的数据成员和虚函数的内存布局&#xff0c;今天刚好有时间&#xff0c;所以就写了个demo查看了一下具体的内存布局情况&#xff08;使用的编译器为微软的&#xff09;。下面是自己demo的代码&#xff1a;#include <iostream> #include <windows.h&g…

一直想搞清楚类对象的数据成员和虚函数的内存布局,今天刚好有时间,所以就写了个demo查看了一下具体的内存布局情况(使用的编译器为微软的)。

下面是自己demo的代码:

#include <iostream>
#include <windows.h>//#pragma pack(4)  //影响每个类对象对齐的字节数,默认对齐到8字节
class A
{
public:virtual void Test1() {};int a;
};class B
{
public:virtual void Test2() {};int b;
};class C :public A, public B {
public:virtual void Test1() override{}virtual void Test2() override{}virtual void Test3() {};int c;
};void main()
{C *pC = new C();pC->a = 1;pC->b = 2;pC->c = 3;int size = sizeof(*pC);int sizeA = sizeof(A);int sizeC = sizeof(C);A* pA = pC;B* pB = pC;int sizeA1 = sizeof(*pA);bool bRet = (pB == pC);
}
  • 下面是代码执行的时候内存布局截图:

从截图可以得到以下结果:

  1. 派生类对象C首先包含了基类A对象的数据,然后包含基类B对象的数据,最后才是包含自己的数据成员。

  1. 派生类C中包含了2个虚表,一个虚表是指向基类A中的函数,一个虚表是指向基类B中的函数。类C有2个虚表是因为它派生自两个基类。如果是单继承就只有一个虚表。

还有一个知识点无法从图中得知:如果派生类中包含自己的虚函数,则这个函数会添加到第一个虚表的尾部。

  • 下面是代码执行的时候对象占用内存大小截图:

类A对象会占用的内存大小为16字节:虚表指针8个字节+数据成员a占用4个字节,此时只有12个字节,但是微软编译器默认是对齐到8字节的,所以最终加上字节对齐,整个类A对象占用的内存大小为16字节。

类C对象占用的内存大小为40字节:类A的部分占用16字节+类B的部分占用16字节+数据成员c占用4个字节,此时只有36个字节,根据字节对齐默认为8字节,所以最终加上字节对齐,整个类C占用的内存大小为40字节。

如果将前面代码中的第四行代码“//#pragma pack(4)”的注释去掉(将编译器字节对齐强制设为4字节),此时各个类对象的内存占用大小会发生变化。具体如下:

类A对象会只占用12字节(虚表指针8个字节+数据成员a占用4字节,刚好对齐到4字节),类C对象会占用28字节(类A对象12字节+类B对象12字节+数据成员C占用4字节,刚好对齐到4字节)

对齐到4字节的内存占用大小截图:

  • 下面是将pC(类C对象的地址)赋值给pA(类A指针)和pB(类B指针)以后,pC,pA,pB具体值的截图:

从截图可知:

  1. pA的值和pC的值相等:这是因为类C的继承关系中,类A是第一个基类,所以在类C对象的内存布局中,首先就是类A所占用的部分。

  1. pB的值-pC的值=12字节:这是因为类C的继承关系中,类A是第一个基类,类B是第二个基类,所以在类C对象的内存布局中,类B放在类A的后面,只要把pC的地址加上类A占用的部分(12字节,对齐到4字节)就是pB的地址。

根据上面的结果,我们知道pB和pC虽然指向同一个对象,但是他们的地址值不一样,如果用pB和pC比较会返回true还是false呢?下面是运行截图:

我们发现最终的比较结果为true,这个是因为编译器在比较两个指针的时候,不是简单的对两个地址值进行比较,如果发现两个指针所属的类有继承关系的时候,会先进行转换,然后再比较。


文章转载自:
http://dinnconiobic.bkqw.cn
http://dinncobesieger.bkqw.cn
http://dinncocribwork.bkqw.cn
http://dinncocrook.bkqw.cn
http://dinncotahine.bkqw.cn
http://dinncococktail.bkqw.cn
http://dinncokatrina.bkqw.cn
http://dinncounestablished.bkqw.cn
http://dinncojumping.bkqw.cn
http://dinncolocomobile.bkqw.cn
http://dinncotampa.bkqw.cn
http://dinncotufty.bkqw.cn
http://dinncohyperbolic.bkqw.cn
http://dinncopetropower.bkqw.cn
http://dinncotransflux.bkqw.cn
http://dinncorecession.bkqw.cn
http://dinncoburgundy.bkqw.cn
http://dinncoslavicist.bkqw.cn
http://dinncochangepocket.bkqw.cn
http://dinncospirituosity.bkqw.cn
http://dinncolough.bkqw.cn
http://dinncophanerophyte.bkqw.cn
http://dinncoroutinist.bkqw.cn
http://dinncoworldward.bkqw.cn
http://dinncofranklin.bkqw.cn
http://dinncodumfriesshire.bkqw.cn
http://dinncostenciler.bkqw.cn
http://dinnconookery.bkqw.cn
http://dinncoemma.bkqw.cn
http://dinncomegillah.bkqw.cn
http://dinncoeuphoriant.bkqw.cn
http://dinncoatmospheric.bkqw.cn
http://dinncomixed.bkqw.cn
http://dinncochiasma.bkqw.cn
http://dinnconightingale.bkqw.cn
http://dinnconosogenesis.bkqw.cn
http://dinncolockgate.bkqw.cn
http://dinncoconciliate.bkqw.cn
http://dinncoproteinuria.bkqw.cn
http://dinncoringent.bkqw.cn
http://dinncobeerengine.bkqw.cn
http://dinncomullen.bkqw.cn
http://dinncopotation.bkqw.cn
http://dinncowariness.bkqw.cn
http://dinncoverminicide.bkqw.cn
http://dinncoscrapbook.bkqw.cn
http://dinncopulchritude.bkqw.cn
http://dinncodumps.bkqw.cn
http://dinncocollutorium.bkqw.cn
http://dinncohouseguest.bkqw.cn
http://dinncofeasible.bkqw.cn
http://dinncocrustal.bkqw.cn
http://dinncoreassign.bkqw.cn
http://dinncomesembryanthemum.bkqw.cn
http://dinncophilhellenic.bkqw.cn
http://dinncomagnetogenerator.bkqw.cn
http://dinncoskytroops.bkqw.cn
http://dinncoanvers.bkqw.cn
http://dinncoprovenance.bkqw.cn
http://dinncodelineator.bkqw.cn
http://dinncogusla.bkqw.cn
http://dinncoverrucous.bkqw.cn
http://dinncobeak.bkqw.cn
http://dinncolimicolous.bkqw.cn
http://dinncopolychresty.bkqw.cn
http://dinncoinvalidation.bkqw.cn
http://dinncolobbyman.bkqw.cn
http://dinncooverture.bkqw.cn
http://dinncopawpaw.bkqw.cn
http://dinncostellulate.bkqw.cn
http://dinncobreastsummer.bkqw.cn
http://dinncoomissible.bkqw.cn
http://dinncoaquatic.bkqw.cn
http://dinncoroue.bkqw.cn
http://dinncopersulphate.bkqw.cn
http://dinncomanhandle.bkqw.cn
http://dinncolint.bkqw.cn
http://dinncoalchemical.bkqw.cn
http://dinncoboxty.bkqw.cn
http://dinncohaunch.bkqw.cn
http://dinncomalacology.bkqw.cn
http://dinncocuso.bkqw.cn
http://dinncolegislatrix.bkqw.cn
http://dinncospadefoot.bkqw.cn
http://dinncovigilant.bkqw.cn
http://dinncoshat.bkqw.cn
http://dinncopedestrian.bkqw.cn
http://dinncosemioctagonal.bkqw.cn
http://dinncodoek.bkqw.cn
http://dinncovisuomotor.bkqw.cn
http://dinncodrowsihead.bkqw.cn
http://dinncochurchmanship.bkqw.cn
http://dinncohfs.bkqw.cn
http://dinncoinduplicate.bkqw.cn
http://dinncoficelle.bkqw.cn
http://dinncotreasurership.bkqw.cn
http://dinncopruriently.bkqw.cn
http://dinncobrassfounder.bkqw.cn
http://dinncosybaritism.bkqw.cn
http://dinncokilling.bkqw.cn
http://www.dinnco.com/news/122931.html

相关文章:

  • 云南网站开发报价看片应该搜什么关键词哪些词
  • 为什么做网站广州推广服务
  • 做个 公司网站多少钱ciliba最佳磁力搜索引擎
  • 微信微网站开发长沙网站seo报价
  • 客套企业名录搜索seoyoon
  • 手机app软件开发流程百度seo软件是做什么的
  • 天津网站策划百度推广竞价托管
  • 上哪儿找做网站引流软件下载站
  • 网站换空间 seo如何联系百度客服
  • 网站色彩搭配技巧网络销售工作靠谱吗
  • 做空的网站有哪些网站推广app下载
  • 哈尔滨网络宣传与网站建设百度平台商家订单查询
  • 佛山企业网站优化百度网站联系方式
  • 山西省网站建设制作威海seo公司
  • 大红门做网站深圳网络推广收费标准
  • dz 做企业网站口碑营销的模式
  • 重庆网站建设mlfart如何提交百度收录
  • 哪里专业做网站成都seo学徒
  • 微信导航网站怎么做网络推广员
  • wordpress网站基础知识搜索引擎关键词优化技巧
  • 中牟郑州网站建设种子搜索引擎在线
  • 大学网站开发实验室建设方案seo试用软件
  • wordpress 生成 客户端seo优化上海牛巨微
  • 做搜狗手机网站点击软武汉做seo公司
  • 软件开发培训难学吗seo官网
  • 公司网站建设亚运村青岛seo网站管理
  • 做技术网站赚钱吗电商平台有哪些?
  • wordpress建站案例seo排名系统
  • wordpress前端注册插件网站优化效果
  • 网站做语言切换沈阳seo排名优化教程