2

假设我想从 C# 调用非托管 C++ 函数。C++ 函数具有以下原型:

int doSomething(int arraySize, int* array)

我从 C# 调用函数如下:

[DllImport(MyLibrary, CallingConvention = CallingConvention.Cdecl)]
public static int doSomething(int arraySize, int[] array)

int[] myArray = new int[] { 1, 2, 3 };
doSomething(myArray.Length, myArray);
  1. 当我这样做时,是myArray固定的吗?当非托管库正在处理它时,垃圾收集器是否有可能将数组移动到其他地方?
  2. 如果它没有自动固定,我应该怎么做才能固定它?
  3. 如果它是自动固定的,它什么时候再次取消固定?
4

0 回答 0