新的 FIXED 修饰符和 BEGIN FIXED . END FIXED 关键字允许您告诉 .Net 运行时,您不希望垃圾收集器移动变量。
UNSAFE FUNCTION Start AS VOID
VAR s := "SDRS"
BEGIN FIXED LOCAL p := s AS CHAR PTR
VAR i := 0
WHILE p[i] != 0
p[i++]++
END
END FIXED
Console.WriteLine(s)
Console.Read()
RETURN
正如您所看到的,BEGIN FIXED 语句需要声明一个局部变量。该局部变量的内容(在上面的示例中为 CHAR PTR)将被排除在块内的垃圾回收之外。
请注意:
使用 FIXED 关键字和上述示例时应格外小心。.Net 中的字符串是不可变的。通常不应以这种方式操作字符串!