类型内存模型(对象内存模型)

类型的内存模型的3个问题:

1、包含什么:附加信息

2、怎么布局:内存对齐

3、使用场景:怎么使用附加信息

 

一、包含什么?

除了包含结构类型的显式成员变量外,类型内存模型需要解决附加信息的引入问题

1、附加信息(Opaque)有哪些:

类型信息、函数信息、继承信息、内存计数等;

 

2、为什么有附加信息:

1)解决多态问题;

2)解决类型运行时信息问题;

3)解决类型的运行时内存管理问题(引用计数)。

 

3、附加信息怎么包含进去:三个方案:

1)类型本身隐式自带(Opaque成员);

2)编译器定制处理:编译器针对类型引入(c++的虚函数表);

3)编译器引入中间容器类型:swift的存在容器;

 

 

二、怎么布局:

详见内存布局;

 

三、怎么使用:

1、多态机制:

函数的调用解释:

1)虚函数表的查找、绑定与调用;

2)类型信息的查找与使用

 

2、内存模型的内存自管理:

引用计数;

 

3、容器中间类型的使用:

编译器实现,开发者不可见;类型的打包、解包

 

4、运行时类型信息:

开发者调用类型信息接口获取;

 

转载于:https://www.cnblogs.com/feng9exe/p/10579546.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值