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# 中所见。另一个合适的选择是使用指针。
我的内存中有一个特定地址(我们称它为 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# 中所见。另一个合适的选择是使用指针。