我在我的内存中有一个特定的地址(我称之为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
Run Code Online (Sandbox Code Playgroud)
如果您已有地址,可以写:
int* addr = (int*)0xDEADBEEF;
Run Code Online (Sandbox Code Playgroud)
或者,来自IntPtr:
var intPtr = new IntPtr(0xDEADBEEF);
int* addr = (int*)intPtr.ToPointer();
Run Code Online (Sandbox Code Playgroud)