根据 C#参考文献 中关于
上面的代码仅供示例。实际应用可能需要使用递归函数。
fixed
语句的说明:
本页未提及的是:如果我们为同一变量嵌套使用
fixed
语句防止垃圾回收器重新定位可移动变量。 ... 在执行语句中的代码后,任何固定的变量都会被取消固定并且可能被垃圾回收。因此,请勿在fixed
语句之外指向这些变量。
fixed
语句会发生什么?var data = new byte[100];
unsafe
{
fixed(byte* pData = data)
{
//pData points to the "pinned" variable
fixed(byte* pData2 = data)
{
//pData points to the "pinned" variable
//pData2 points to the "pinned" variable
}
//Does pData still point to the "pinned" variable?
}
}
上面的代码仅供示例。实际应用可能需要使用递归函数。