思维

对象内存布局

在高级编程语言中,软件开发人员除了使用基础类型之外,还会使用复合类型。按照面向对象编程思想的说法,这些复合类型叫做类。软件开发人员在定义了类之后,就可以对其进行实例化,而后使用。那么,类定义和类实例化到底做了什么呢?

如果从程序编译及运行时内存使用的角度来考虑,类定义,其实就是组合了部分数据类型。程序开发人员在完成这种组合之后,在程序编译的过程中,编译器会根据软件开发人员定义的类,按照既定的标准来计算这个类的内存占用量,以及类中各个字段在这个类的偏移量。

在类实例化的过程中,其实就是按照编译时计算的类的内存占用量及实际传入的参数,来计算实例化一个类的对象,需要使用的内存的总大小,并根据计算之后的结果,调用内存管理相关函数来完成内存的分配。

从内存、进程的角度来看,并没有类、对象的概念,只有内存地址的概念。类的定义、实例化和使用,最终都变成了对内存中一块数据的解释方法。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容