// Initialize unmanged memory to hold the array.
int size = Marshal.SizeOf(bytes[0]) * bytes.Length;
IntPtr pnt = Marshal.AllocHGlobal(size);
try
{
// Copy the array to unmanaged memory.
Marshal.Copy(bytes, 0, pnt, bytes.Length);
// Copy the unmanaged array back to another managed array.
double[] managedArray2 = new double[bytes.Length / 8];
Marshal.Copy(pnt, managedArray2, 0, bytes.Length / 8);
return managedArray2;
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}