思维

对象内存布局

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

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

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

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

你可能感兴趣的:(思维)