天天看點

C#中的Unsafe和Fixed

<code>*</code>

<code>&amp;</code>

<code>-&gt;</code>

<code>例如:</code>

上面的代碼由于是在CLR下托管執行,為了減少記憶體碎片C#的自動垃圾回收機制會允許已經配置設定的記憶體在運作時進行位置調整,是以如果我們多次調用的話就可能

導緻指針指向其他的變量。比如<code>*pInt為</code>指向一個變量的位址為1001,CLR在重新記憶體整理配置設定後該變量就存儲在位址為5001的地方。而原來1001的地方可能會

被配置設定其他變量,要解決這個問題我們就需要使用Fixed關鍵字。

fixed 語句禁止垃圾回收器重定位可移動的變量。fixed 語句隻能出現在不安全的上下文中。Fixed 還可用于建立固定大小的緩沖區。如下面例子:

注意要勾選項目屬性中生成标簽的允許不安全代碼。

http://www.cnblogs.com/carysun/archive/2009/11/07/csharp-unsafe.html