Я пишу простой код C #, в котором я использую Pointer для чтения значения из ячейки памяти.Код работает нормально, когда я пытаюсь прочитать значение из того же метода, где я вставляю значение.Однако, это не работает, когда я пытаюсь получить доступ к значению вне метода.
Вот мой блок кода:
class Program
{
public unsafe static int* numberPointer;
static void Main(string[] args)
{
InsertValueIntoMemoryAddress();
ReadValueFromMemoryAddress();
}
public unsafe static void InsertValueIntoMemoryAddress()
{
int number = 100;
numberPointer = &number;
Console.WriteLine("The value of Number is {0}", *numberPointer);
Console.WriteLine("The address of Number is {0}", (int)numberPointer);
IntPtr ptr = new IntPtr((int)numberPointer);
int value = Marshal.ReadInt32(ptr);
Console.WriteLine("Inside the same method --- The value from a Memory location {0}", value);
}
public unsafe static void ReadValueFromMemoryAddress()
{
IntPtr ptr = new IntPtr((int)numberPointer);
int value = Marshal.ReadInt32(ptr);
Console.WriteLine("Outside from the method -- The value from a Memory location {0}", value);
}
}
Вот вывод вышеупомянутой программы:
Значение Number: 100
Адрес Number: 10416820
Внутри того же метода ---Значение из ячейки памяти 100
Вне метода - значение из ячейки памяти 10416820
Может кто-нибудь помочь мне, почему он не можетпрочитать значение из адреса памяти вне метода;вместо этого он просто возвращает адрес памяти?