Marshal.Copy Method (Double[], Int32, IntPtr, Int32)


Copies data from a one-dimensional, managed double-precision floating-point number array to an unmanaged memory pointer.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

public static void Copy(
	double[] source,
	int startIndex,
	IntPtr destination,
	int length


Type: System.Double[]

The one-dimensional array to copy from.

Type: System.Int32

The zero-based index in the source array where copying should start.

Type: System.IntPtr

The memory pointer to copy to.

Type: System.Int32

The number of array elements to copy.

Exception Condition

startIndex and length are not valid.


source, startIndex, destination, or length is null.

You can use this method to copy a subset of a one-dimensional managed array to an unmanaged C-style array.

The following example copies an array to unmanaged memory and then copies the unmanaged array back to managed memory.

using System;
using System.Runtime.InteropServices;

class Example

    static void Main()
        // Create a managed array.
        double[] managedArray = { 0.1, 0.2, 0.3, 0.4 };

        // Initialize unmanaged memory to hold the array.
        int size = Marshal.SizeOf(managedArray[0]) * managedArray.Length;

        IntPtr pnt = Marshal.AllocHGlobal(size);

            // Copy the array to unmanaged memory.
            Marshal.Copy(managedArray, 0, pnt, managedArray.Length);

            // Copy the unmanaged array back to another managed array.

            double[] managedArray2 = new double[managedArray.Length];

            Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);

            Console.WriteLine("The array was copied to unmanaged memory and back.");

            // Free the unmanaged memory.




requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top