c#如何访问未分配的内存

时间:2017-02-22 06:42:16

标签: c#

在C#中写的是我无法访问未分配的内存。他们说这在不安全的背景下是可能的。我的问题是如何做到这一点? 我试过这样的事情:

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

在项目属性中使用allow unsafe选项。而且这段代码无法编译。

1 个答案:

答案 0 :(得分:1)

unsafe关键字不会完全改变语言或编译模型,在使用它们之前仍需要初始化任何变量。如果要访问“未分配的内存”,则需要获取指向该内存的指针。这是一个例子:

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

这里我们得到一个指向空数组的指针,它给出零指针。然后我们将该指针偏移一些量(地址),这会产生指向该内存地址的指针。