У меня есть массив jagged, который мне нужно передать внешнему методу.Фиксированный оператор с неровным массивом
[DllImport(...)]
private static extern int NativeMethod(IntPtr[] ptrArray);
...
fixed (ulong* ptr = array[0])
{
for (int i = 0; i < array.Length; i++)
{
fixed (ulong* p = &array[i][0])
{
ptrArray[i] = new IntPtr(p);
}
}
NativeMethod(ptrArray);
}
Проблема в том, что ptr не используется и удаляется из-за компиляции. Затем фиксированная заявка в соответствии с ней также удаляется. Таким образом, массив перемещается GC таким образом, что элементы ptrArray становятся недействительными.
Каков наилучший способ передачи зубчатых массивов в виде одномерных массивов указателей на собственные методы?
Update:
Вот код C++ для NativeMethod:
NativeClass::NativeMethod(const int* array)
Каков ваш собственный метод, который выглядит как реальный параметр? –
обновленный - добавлен код C++ – levanovd
Объявление C++ является * not * для массива с зазубринами, для которого требуется аргумент int **. Трудно вам помочь. –