簡體   English   中英

為陣列分配內存

[英]Allocation of memory for an Array

所有類型都是從Object類派生的,但是值類型沒有在堆上分配。 值類型變量實際上包含它們的值。 那么如何將這些類型存儲在數組中並用於需要引用變量的方法中? 有人可以解釋一下這些值類型是數組的一部分時如何將它們存儲在堆中嗎?

裝箱和拆箱 另請參閱此處,以獲得與陣列有關的信息(部分下降)。 請注意,這是針對對象數組的,值類型數組(例如int[] )沒有任何(un)裝箱。

看一下這個問題:

數組,堆和堆棧以及值類型

您可以將值類型的實例傳遞給需要對象的方法(引用類)。 在這種情況下,發生裝箱和拆箱。

值類型數組不需要裝箱或拆箱!

CLR特別處理值類型的數組。 當然,數組是在堆上分配的引用類型,但是值類型的值將嵌入到堆記錄中(而不是在堆棧中)。

同樣,當引用類型類包含值類型字段時,該字段的值將嵌入到堆中的記錄中。

值類型可以在堆棧上分配。 僅當它們在參數,局部變量或其他值類型的字段中時,才可能發生這種情況。

數組中的值類型和類中的字段存儲在本地數組或類中,而不是將指針存儲在其中;值類型導致更多的本地內存訪問(性能提高),並且在數組的情況下,值n緊接在值n-1之后內存,這是引用類型數組中的對象不能保證的(包括對象數組中的框式值-也不具有連續性)。 在引用類型數組中,引用是連續的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM