美文网首页
C#不安全代码

C#不安全代码

作者: 86a262e62b0b | 来源:发表于2019-10-16 13:58 被阅读0次

    参考:https://www.runoob.com/csharp/csharp-unsafe-codes.html

    • fixed关键字
      由于C#中声明的变量在内存中的存储受垃圾回收器管理;因此一个变量(例如一个大数组)有可能在运行过程中被移动到内存中的其他位置。如果一个变量的内存地址会变化,那么指针也就没有意义了。
      解决方法就是使用fixed关键字来固定变量位置不移动。
    static unsafe void Main(string[] args)
    {
      fixed(int *ptr = int[5])  {//...}
    }
    
    • stackalloc
      在unsafe不安全环境中,我们可以通过stackalloc在堆栈上分配内存,因为在堆栈上分配的内存不受内存管理器管理,因此其相应的指针不需要固定。
    static unsafe void Main(string[] args)
    {
      int *ptr = stackalloc int[1] ;
    }
    

    相关文章

      网友评论

          本文标题:C#不安全代码

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