假设我想从 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);
- 当我这样做时,是
myArray
固定的吗?当非托管库正在处理它时,垃圾收集器是否有可能将数组移动到其他地方? - 如果它没有自动固定,我应该怎么做才能固定它?
- 如果它是自动固定的,它什么时候再次取消固定?