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


Copies data from a one-dimensional, managed 32-bit signed integer array to an unmanaged memory pointer.

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

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


Type: System.Int32[]

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.


startIndex 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.
        int[] managedArray = { 1, 2, 3, 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.

            int[] managedArray2 = new int[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