1.unsafe安全
爲了保持類型安全,默認狀況下,C# 不支持指針運算。ide
在公共語言運行庫 (CLR) 中,不安全代碼是指沒法驗證的代碼。C# 中的不安全代碼不必定是危險的,只是其安全性沒法由 CLR 進行驗證的代碼。所以,CLR 只對在徹底受信任的程序集中的不安全代碼執行操做。若是使用不安全代碼,由您負責確保您的代碼不會引發安全風險或指針錯誤.ui
unsafe 關鍵字表示不安全上下文,該上下文是任何涉及指針的操做所必需的。spa
能夠在 類型或成員,塊內 聲明中使用 unsafe 修飾符指針
若要編譯不安全代碼,必須指定 /unsafe 編譯器選項。 沒法經過公共語言運行時驗證不安全代碼。code
static void Main(string[] args) { unsafe { int* i; //指向int的指針 int** j;//指向int指針的指針 int x = 1; i = &x; //指向x j = &i; Console.WriteLine("x地址:{0}",(int)i); Console.WriteLine("指針i的地址:{0}", (int)j); Console.WriteLine("i指向的值:{0}",*i); Console.WriteLine("j指向的最終值:{0}", **j); } Console.Read(); }
http://msdn.microsoft.com/zh-cn/library/t2yzs44b(v=vs.80).aspx對象
2.fixedblog
http://hi.baidu.com/jiang_yy_jiang/item/d0a162f12f4df6c0a835a2d3內存
3.GCHandle:提供用於從非託管內存訪問託管對象的方法ci
Test t=new Test(); GCHandle hander = GCHandle.Alloc(t); var pin = GCHandle.ToIntPtr(hander);