固定

fixed 语句将内存固定在一个位置。内存中的对象通常是移动的,这使垃圾收集成为可能。但是当我们使用不安全的指针指向内存地址时,不能移动该内存。

  • 我们使用 fixed 语句来确保垃圾收集器不重定位字符串数据。

固定变量

var myStr = "Hello world!";

fixed (char* ptr = myStr)
{
    // myStr is now fixed (won't be [re]moved by the Garbage Collector).
    // We can now do something with ptr.
}

用于不安全的上下文。

固定阵列大小

unsafe struct Example
{
    public fixed byte SomeField[8];
    public fixed char AnotherField[64];
}

fixed 只能用于 struct 中的字段(也必须在不安全的上下文中使用)。