Dope Vectors是一种数据结构,编译器使用它来存储有关数组的某些元数据,例如其总大小,一个单元的大小(也称为数组的跨度等)。这些用于描述数组和存储多个数组的其他类似结构一种数据类型的值作为完整的内存块。它还可以描述包含数组和类似结构作为其组件的结构。涂料向量可帮助编译器轻松访问数组。编译器执行的不同检查,例如越界检查,数据类型检查等。由于与数组关联的涂料向量,所有这些都是可能的。
以下详细信息存储在特定阵列的涂料向量中:
- E表示一个单个数组元素的大小,例如E = 1表示字符,E = 4表示整数等。
- VO表示RAM内阵列的虚拟起始存储器。
- LU1表示数组的起始下限。
- UB1表示当前占用阵列的上限。
- UB2表示可以填充数组的上限。
涂料向量存储的详细信息因一个操作系统而异,但大多数情况下,它包含有关数组的以下信息:
- 数组或数组的维数的等级或数量
- 数组的基地址。
- 数组中存储的元素的类型。
- 数组的步幅。
- 数组的范围。
和许多其他细节。
通过在阵列中使用涂料向量的概念,可以解决许多问题,但需要付出少量计算开销(从涂料向量中获取数据),例如:
- 如果不使用涂料向量,则很难释放与阵列关联的额外内存。假设我们最初为该阵列分配了200KB的内存。但是使用它时只需要150 Kb的内存。使用掺杂向量释放多余的内存变得非常容易,因为它可以存储当前数组占用的内存范围。
- 没有掺杂向量,很难确定数组中元素的数量,因为它存储了数组总大小和步幅长度的信息。它可用于计算数组中元素的总数。