如何写入内存地址?

时间:2013-05-14 19:12:00

标签: c# pointers unsafe memory-address read-write

C#中指针和不安全世界的新手。我正在通过指针获取变量的内存地址,在这里和那里移动一些东西等;基本上学习。

static unsafe void M()
{
    var i = 1;
    var p = &i; //gets memory location of variable i here

    //how do I write to location p, say a value of 100?
}

我想知道是否有办法写一个特定的位置?如果我能同时读写,那么看看会发生什么有很大帮助。

没有实际目的,只是学习。或者用C#是不可能的?

3 个答案:

答案 0 :(得分:1)

您需要使用*运算符取消引用指针。例如:

*p = 100;

答案 1 :(得分:1)

喜欢这个

*p = 100;

Console.WriteLine(i); // prints 100;

答案 2 :(得分:1)

你需要尊重它。

这是一个LINQPad代码段:

int i = 1;

unsafe
{
    var p = &i;

    *p = 100;
}

i.Dump();

按预期输出“100”。