c#更改变量内存地址

c# change variable memory address

我的内存中有一个特定地址(我们称它为 ADR)和一个特定值(假设 4 字节 int)

我想在 c# 中创建一个 int 变量,并将该变量的地址更改为 ADR,例如,当我这样做时; print myVar 它打印存储在 ADR 中的值。

我知道我可以创建一个 IntPtr(ADR),然后使用 Marshal 方法来获取值,但我想要一种方法来执行此操作,而无需在每次必须读取值时都调用方法。

谢谢!!

您知道可以在 C# 中使用指针吗?

int someVariable = 0;

unsafe
{
    int* addr = &someVariable;
    *addr = 42;
}

Console.WriteLine(someVariable); // Will print 42

如果您已经有了地址,您可以写:

int* addr = (int*)0xDEADBEEF;

或者,来自 IntPtr

var intPtr = new IntPtr(0xDEADBEEF);
int* addr = (int*)intPtr.ToPointer();

一种直接的方法是在您的 C# 代码中调用 ASM 代码,如您在 Invoking Assembly Code in C# 中所见。另一个合适的选择是使用指针。