[英]Allocation of memory for an Array
所有类型都是从Object类派生的,但是值类型没有在堆上分配。 值类型变量实际上包含它们的值。 那么如何将这些类型存储在数组中并用于需要引用变量的方法中? 有人可以解释一下这些值类型是数组的一部分时如何将它们存储在堆中吗?
CLR特别处理值类型的数组。 当然,数组是在堆上分配的引用类型,但是值类型的值将嵌入到堆记录中(而不是在堆栈中)。
同样,当引用类型类包含值类型字段时,该字段的值将嵌入到堆中的记录中。
值类型可以在堆栈上分配。 仅当它们在参数,局部变量或其他值类型的字段中时,才可能发生这种情况。
数组中的值类型和类中的字段存储在本地数组或类中,而不是将指针存储在其中;值类型导致更多的本地内存访问(性能提高),并且在数组的情况下,值n紧接在值n-1之后内存,这是引用类型数组中的对象不能保证的(包括对象数组中的框式值-也不具有连续性)。 在引用类型数组中,引用是连续的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.