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

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

1、包含什么:附加信息

2、怎么布局:内存对齐

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

 

一、包含什么?

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

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

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

 

2、为什么有附加信息:

1)解决多态问题;

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

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

 

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

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

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

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

 

 

二、怎么布局:

详见内存布局;

 

三、怎么使用:

1、多态机制:

函数的调用解释:

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

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

 

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

引用计数;

 

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

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

 

4、运行时类型信息:

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

 

posted @ 2019-03-22 17:16  zzfx  阅读(358)  评论(0编辑  收藏  举报