美文网首页js css html
C# 使用unsafe非托管代码测试

C# 使用unsafe非托管代码测试

作者: Ritchie_Li | 来源:发表于2022-08-23 22:33 被阅读0次

C#使用托管平台,不允许操作变量地址,实际可以在获取变量的地址的,修改地址变量指向的值,也即修改了变量的值。

如下测试:获取变量的地址。声明一个指向整型变量的指针 p,并将整数变量 number 的地址赋值给该指针,修改指针指向的的值,验证变量的值是否和修改指针指向的值一样。

static void Main(string[] args)

{

  int number=10;

  unsafe

  {

    //将变量number 的地址赋值给一个整型指针变量 *p

    int* p = &number;

    //输出指针变量*p的地址值

    Console.WriteLine($"Value at the location pointed to by p:0x{*p:X}");

    //输出 指针变量地址:

    long address = (int)p;

    Console.WriteLine($"The address stored in p: {address},0x{address:X}");

    //修改指针变量指向的值

    *p = 20;

  }

  // Print the value of the variable number:

  Console.WriteLine("Value of the variable number: {0:X}", number);

    System.Console.ReadKey();

}

输出:

Value at the location pointed to by p:0xA

The address stored in p: -797971444,0xFFFFFFFFD06FEC0C

Value of the variable number: 14

修改指针地址所指向内存中的值,即可修改变量的值。

要设置项目允许不安全代码:

相关文章

网友评论

    本文标题:C# 使用unsafe非托管代码测试

    本文链接:https://www.haomeiwen.com/subject/ggqngrtx.html