用于阵列访问的指针
此示例演示了如何将指针用于对 C#数组的类 C 访问。
unsafe
{
var buffer = new int[1024];
fixed (int* p = &buffer[0])
{
for (var i = 0; i < buffer.Length; i++)
{
*(p + i) = i;
}
}
}
unsafe
关键字是必需的,因为指针访问不会发出通常在以常规方式访问 C#数组时发出的边界检查。
fixed
关键字告诉 C#编译器发出指令以异常安全的方式固定对象。需要固定以确保垃圾收集器不会将数组移动到内存中,因为这会使指向数组内的任何指针无效。