在托管/非托管数组互操作性中,我有一个没有通常的情况
fixed (byte* data = new byte[length])
{
// work with the array
}
而是我想固定一个数组,我只得到一个参考,像这样:
IntPtr dataPtr = camera.Image2d.GetDataBuffer();
fixed (byte* data = (byte *)dataPtr)
{
// work with the array
}
1)根据我的理解,底部代码也应该可以工作,因为“固定”会将内存位置固定在内存管理器中的低级别,而不关心指向它的任何对象?(意思是,我没有“根”/直接指针——即使可能没有任何这样的概念。)
还有一个问题:
2) 使用“固定”的要求来自与任何已执行代码同时运行的 CLR 内存管理器,因此它可以随时移动数组?