[英]Allocation of memory for an Array
所有類型都是從Object類派生的,但是值類型沒有在堆上分配。 值類型變量實際上包含它們的值。 那么如何將這些類型存儲在數組中並用於需要引用變量的方法中? 有人可以解釋一下這些值類型是數組的一部分時如何將它們存儲在堆中嗎?
CLR特別處理值類型的數組。 當然,數組是在堆上分配的引用類型,但是值類型的值將嵌入到堆記錄中(而不是在堆棧中)。
同樣,當引用類型類包含值類型字段時,該字段的值將嵌入到堆中的記錄中。
值類型可以在堆棧上分配。 僅當它們在參數,局部變量或其他值類型的字段中時,才可能發生這種情況。
數組中的值類型和類中的字段存儲在本地數組或類中,而不是將指針存儲在其中;值類型導致更多的本地內存訪問(性能提高),並且在數組的情況下,值n緊接在值n-1之后內存,這是引用類型數組中的對象不能保證的(包括對象數組中的框式值-也不具有連續性)。 在引用類型數組中,引用是連續的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.