zoukankan      html  css  js  c++  java
  • fixed 语句(C# 参考)

    fixed 语句禁止垃圾回收器重定位可移动的变量。fixed 语句只能出现在不安全的上下文中。Fixed 还可用于创建固定大小的缓冲区

    fixed 语句设置指向托管变量的指针并在 statement 执行期间“钉住”该变量。如果没有 fixed 语句,则指向可移动托管变量的指针的作用很小,因为垃圾回收可能不可预知地重定位变量。C# 编译器只允许在 fixed 语句中分配指向托管变量的指针。

    // assume class Point { public int x, y; }
    // pt is a managed variable, subject to garbage collection.
    Point pt = new Point();
    // Using fixed allows the address of pt members to be
    // taken, and "pins" pt so it isn't relocated.
    fixed ( int* p = &pt.x )
    {
        *p = 1;
    }

    可以用数组或字符串的地址初始化指针:

    fixed (int* p = arr) ...  // equivalent to p = &arr[0]
    fixed (char* p = str) ... // equivalent to p = &str[0]

    只要指针的类型相同,就可以初始化多个指针:

    fixed (byte* ps = srcarray, pd = dstarray) {...}

    要初始化不同类型的指针,只需嵌套 fixed 语句:

              fixed (int* p1 = &p.x)
    {
        fixed (double* p2 = &array[5])
        {
            // Do something with p1 and p2.
        }
    }

    执行完语句中的代码后,任何固定变量都被解除固定并受垃圾回收的制约。因此,不要指向 fixed 语句之外的那些变量。

    Note注意

    无法修改在 fixed 语句中初始化的指针。

    在不安全模式中,可以在堆栈上分配内存。堆栈不受垃圾回收的制约,因此不需要被锁定。有关更多信息,请参见 stackalloc

  • 相关阅读:
    javascript变量
    javascript数据类型
    javascript基本语法
    javascript用法
    javascript简介
    js 随机生成颜色值
    JS 判断传入的变量类型是否是Array
    swiper2 swiper-slide 之间的间距调整
    IE9以及以下不支持jquery ajax跨域问题
    HBuilder只提示html 不提示js
  • 原文地址:https://www.cnblogs.com/absolute8511/p/1649653.html
Copyright © 2011-2022 走看看