2012-10-25 29 views
1

我有在主程序中一個這樣的數組:(我使用C#在asp.net編程)數組使用了相同的內存空間?

double[][] example= new double[][]; 

在這個例子讓想象的是10 * 2的陣列。

所以接下來我會做的就是發送此數組這樣的另一個功能:

我知道,在每一個空間雙陣列只有64位浮點數,所以數組將有這個例子使用了1280位的內存,但是當它發送給函數時,它使用了相同的內存空間?或者它使用一組全新的內存空間?

回答

2

數組是引用類型,而不是值類型。這意味着變量examplearray實際上並不包含1280位數據,它只包含一個對實際數據的引用(有時也稱爲指針),該引用存儲在別處(爲了本文的目的,它沒有不管「其他地方」在哪裏)。正如你在那裏完成的那樣,將該變量傳遞給一個方法只會複製該引用(32或64位,取決於系統),而不是基礎的1280位數據。

+0

它不知道謝謝你的anwser,現在的問題是我怎麼能找出有多少內存被這個數組使用,我在印象之下,因爲雙有一個64位的生命,所以一個數組在每個空間將有相同的64位 – JUAN

+0

@JUAN那麼,你有什麼是一個數組的數組,而不僅僅是一個單一的數組,所以'example'指向一個結構,其中包含其他數組的其他引用。參考的大小是32或64位。一旦你創建了許多其他數組(你還沒有這樣做),那麼每個引用將指向另一個數據結構,它包含一些頭信息,然後還有X * 64位,其中X是該數組的大小。這就是實際數據的來源。 – Servy

+0

@Servi是的我沒有寫數組的創建,所以下一個要做的事情就是'例如[N] = new double [2]',所以我會:'example [N] [0],例如[N] [1]'這將意味着他們每個人只有64位共64 * N? – JUAN

相關問題