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

广州建设大马路小学网站人民日报新闻

广州建设大马路小学网站,人民日报新闻,家政网站制作,做网站编辑器内存分区 内存全局数据区,代码区,栈区,堆区。 定义一个类 类的成员函数被放在代码区 类的静态成员变量被放在全局数据区(不占用类的存储空间) 非静态成员在类的实例内,实例在栈区或者堆区 虚函数指针&…

内存分区

内存全局数据区,代码区,栈区,堆区。

定义一个类

类的成员函数被放在代码区

类的静态成员变量被放在全局数据区(不占用类的存储空间)

非静态成员在类的实例内,实例在栈区或者堆区

虚函数指针,虚基类指针在类的实例内,实例在堆区或者栈区

内存布局实例

普通类(不携带静态成员,也没有继承关系)

class A1
{
public:void func1() {};
public:int a1;char a2;char a3;
};class A2
{
public:void func2() {};
public:char a1;int a2;char a3;
};

class A1 size(8):
±–
0 | a1
4 | a2
5 | a3
| (size=2)
±–
class A2 size(12):
±–
0 | a1
| (size=3)
4 | a2
8 | a3
| (size=3)
±–

A1类携带3个成员变量及1个成员函数,成员函数不占用内存,在x86平台下,整型变量a1(占用4个字节),字符型变量a2(占用一个字节),a3(占用一个字节), 总共占用内存为 8 字节。因为内存是4字节对齐的,2个字符变量占用2字节被补齐为4字节。

A2类携带和A1类相同的变量,只不过调整了下顺序,第1个为字符变量(占用1个字节,补齐为4字节),第2个为整型变量(占用4字节),第3个为字符变量(占用1字节补齐为4字节)

类(携带静态成员变量)

class B
{
public:void func1();
public:static int b1;int b2;
};

该类的类名为B。用简图表示该类内存布局:

class B size(4):
±–
0 | b2

​ ±–

B类携带静态整型成员变量b1和整型变量b2,静态整型变量b1不占用类的内存,整型变量占用4字节的内存,因而B类占用内存为4字节。

类(携带虚函数,并继承)

class C1
{
public:void func1();virtual void func2();
public:int a1;
};class C2 : public C1
{
public:void func2() override;
};class C3
{
public:virtual void func1();virtual void func2();
public:int a1;
};

class C1 size(8):
±–
0 | {vfptr}
4 | a1
±–
C1::$vftable@:
| &C1_meta
| 0
0 | &C1::func2
C1::func2 this adjustor: 0

class C2 size(8):
±–
0 | ±-- (base class C1)
0 | | {vfptr}
4 | | a1
| ±–
±–
C2::$vftable@:
| &C2_meta
| 0
0 | &C2::func2
C2::func2 this adjustor: 0

class C3 size(8):
±–
0 | {vfptr}
4 | a1
±–
C3::$vftable@:
| &C3_meta
| 0
0 | &C3::func1
1 | &C3::func2
C3::func1 this adjustor: 0
C3::func2 this adjustor: 0

类C1携带整型成员变量a1(占用4字节内存),普通成员函数func1,虚成员函数func2(一旦一个类对象携带虚函数,则该类有一个虚函数指针,在x86平台下,该指针的大小为4字节)故而类C1的大小为8字节。虚函数指针指向一个虚函数表(是一个数组),类C1中有多少个虚函数,虚函数表中就有多少个虚函数(数组中就有多少个虚函数,按照定义虚函数的顺序进行排列)

类C2继承类C1,虚函数func2继承于类C1,C2的虚函数表的第1个元素即为C2:func2

类C3携带2个虚函数,虚函数表中有2个元素,第1个元素为C3:func1 ,第2个元素为C3:func2

类(携带虚函数,并多继承)

class D1
{
public:virtual void func1();
};class D2
{
public:virtual void func2();
};class D3 : public D1, D2
{
};

class D1 size(4):

±–

0 | {vfptr}

±–

D1::$vftable@:

| &D1_meta

| 0

0 | &D1::func1

D1::func1 this adjustor: 0

class D2 size(4):

±–

0 | {vfptr}

±–

D2::$vftable@:

| &D2_meta

| 0

0 | &D2::func2

D2::func2 this adjustor: 0

class D3 size(8):

±–

0 | ±-- (base class D1)

0 | | {vfptr}

| ±–

4 | ±-- (base class D2)

4 | | {vfptr}

| ±–

±–

D3::KaTeX parse error: Expected 'EOF', got '&' at position 17: …ftable@D1@: | &̲D3_meta | 0 0…vftable@D2@:
| -4
0 | &D2::func2

类D3继承D1和D2,D3中含有2个虚函数指针,占用大小为8字节,虚函数指针1指向D1的虚函数表,虚函数D2指向D2的虚函数表。(这部分可能理解有误,如有错误,希望帮忙指出)

http://www.hrbkazy.com/news/30347.html

相关文章:

  • 酒店官方网站建设书百度搜索热度排名
  • 北京营销网站制作百度关键词推广多少钱
  • 商城网站建设需要多少网站免费推广软件
  • 在线捏脸网站需要多少钱一套完整的运营方案
  • 网站建设与维护面试全国疫情最新数据
  • 廊坊网站建设报价普通话手抄报文字内容
  • 网站前台语言百度收录量查询
  • 展览设计工程有限公司合肥seo推广公司
  • 中央取消全国各地核酸检测一个网站可以优化多少关键词
  • 营销型外贸网站广州优化搜索曝光次数的方法
  • 各大搜索引擎网站提交入口百度官方版下载
  • 商务网站建设的应用今日西安头条最新消息
  • 简单的网站源码西宁网站seo
  • 设计精美的中文网站seo推广什么意思
  • 网站没建好可以备案吗台州专业关键词优化
  • 怎么给网站加图标深圳网络营销推广方案
  • 平面广告设计软件有哪些seo软文推广工具
  • 网站建设的基本流程包括网络推广计划制定步骤
  • dw做网站背景音乐小红书推广方案
  • 做电力公司网站网站百度不收录的原因
  • 网站建设免费模版外贸独立站怎么做
  • 近期军事新闻热点事件手机网站seo免费软件
  • 电子政务网站建设公司百度优化是什么
  • 商城网站建设报价青岛网站seo
  • 辛集专业网站建设越秀seo搜索引擎优化
  • 企业网站建设怎么做黑科技推广软件
  • 房产如何做网站手机百度安装下载
  • 猎趣网站新手20种引流推广方法
  • 淄博网站制作公司托管株洲网页设计
  • 登封网络推广公司湖南关键词优化品牌价格