2014-12-19 44 views
3

我應該在C#中做一個項目來展示列表如何工作。我可以在C#中獲取變量或對象的物理地址嗎?

我想這是在這樣的圖形界面來顯示一個好主意:

-in「值」字段:節點的值
-in「下一步」字段:下一個節點

的物理地址

這可能嗎?

+0

如果您的目的是演示如何使用內存,那麼您的'List'實現也可以包含*高級*內存管理。 – Sinatr 2014-12-19 09:07:19

+1

除非變量是'fixed',否則不能保證它不會改變位置.http://msdn.microsoft.com/en-gb/library/f58wzh21%28v=vs.80%29.aspx – Jodrell 2014-12-19 09:08:21

+0

值得注意的是通常可以在垃圾回收期間移動託管變量,因爲垃圾回收器可以(也將)對內存進行碎片整理 – 2014-12-19 09:10:23

回答

3

是的,不安全的代碼(至少虛擬地址,而不是原始的物理內存地址,但這正是你想要的)。

有關詳細信息,請參閱MSDN: How to: Obtain the Address of a Variable (C# Programming Guide)。它會指導您編譯以下示例(它需要在項目屬性或/unsafe開關中啓用不安全的代碼)以及獲取可移動變量位置時可能遇到的陷阱,這些陷阱需要關鍵字fixed停留在相同位置,基本上說。

int number; 
int* p = &number; //address-of operator & 
+0

C#或C++或C? – 2014-12-19 09:06:35

+6

這個問題是關於C#的,所以我的答案也是這樣)的確,不安全的C#代碼看起來很像C/C++。 – 2014-12-19 09:07:02

+1

@PranitKothari,運行鏈接,你會得到你的答案... – 2014-12-19 09:07:20

相關問題