2017-02-22 42 views
0

在C#書中寫道我無法訪問未分配的內存。他們說這在不安全的情況下是可能的。我的問題是如何做到這一點? 我試過這樣的:c#如何訪問未分配的內存

static void Main(string[] args) 
{ 
    unsafe 
    { 
     int c; 
     Console.WriteLine(c); 
    }    
} 

允許項目屬性中的不安全選項。此代碼無法編譯。

+0

想玩俄羅斯輪盤賭嗎?使用C#,然後訪問未分配的內存(或類似的東西)就像用Lambo越野... –

+0

不,我只是好奇。如果有我想知道的選項。 –

回答

1

unsafe關鍵字不會完全改變語言或編譯模型,您仍然需要在使用它們之前初始化任何變量。如果你想訪問「未分配的內存」,你需要獲得一個指向那個內存的指針。這裏是一個例子:

unsafe void AccessMemory() 
{ 
    const int address = 10000; 
    byte[] array = new byte[0]; 
    fixed (byte* zero = array) 
    { 
     byte* p = zero + address; 
    } 
} 

這裏我們得到一個指向空數組的指針,它給出了零指針。然後我們通過一定量(地址)來抵消該指針,這導致指向該存儲器地址的指針。