Используя низкоуровневые методы класса Marshal, можно распределить любой тип в неуправляемую память. Например, для каждого массива double [] в jaggedArray выделите неуправляемый блок памяти с помощью Marshal.AllocHGlobal и скопируйте в него элементы массива, используя метод Marshal.Copy (Double [], Int32, IntPtr, Int32). AllocHGlobal возвращает тип IntPtr, который может быть передан методу C ++ в качестве указателя, в этом случае удваивается *.