c#改变变量内存地址

本文关键字:地址 内存 变量 改变 | 更新日期: 2023-09-27 17:50:28

我的内存中有一个特定的地址(我们称之为ADR),具有特定的值(我们假设为4字节整型)

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

我知道我可以创建一个IntPtr(ADR),然后使用Marshal方法来获取值,但我想要一种方法来做到这一点,而不是每次我必须读取值时调用方法。

谢谢! !

c#改变变量内存地址

你知道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代码,正如您在c#中调用汇编代码中看到的那样。另一个合适的选择是使用指针。