int*[] temp = new int*[data.Length];
for (int i = 0; i < temp.Length; i++) {
 temp[i] = (int*)(void*)Marshal.UnsafeAddrOfPinnedArrayElement(data[i], 0);
}
fixed (int** p = temp) { ...
こうじゃね
本気でこんなの書く奴がいたら頭おかしい