이 페이지가 유용했습니까?
이 콘텐츠에 대한 여러분의 의견은 중요합니다. 의견을 알려주십시오.
추가 의견
1500자 남음
내보내기(0) 인쇄
모두 확장

Marshal.Copy 메서드 (Int16[], Int32, IntPtr, Int32)

관리되는 16비트 부호 있는 1차원 정수 배열의 데이터를 관리되지 않는 메모리 포인터로 복사합니다.

네임스페이스: System.Runtime.InteropServices
어셈블리: mscorlib(mscorlib.dll)

public static void Copy (
	short[] source,
	int startIndex,
	IntPtr destination,
	int length
)
public static void Copy (
	short[] source, 
	int startIndex, 
	IntPtr destination, 
	int length
)
public static function Copy (
	source : short[], 
	startIndex : int, 
	destination : IntPtr, 
	length : int
)

매개 변수

source

복사할 1차원 배열입니다.

startIndex

배열에 대해 Copy를 시작할 0부터 시작하는 인덱스입니다.

destination

복사할 대상 메모리 포인터입니다.

length

복사할 배열 요소 수입니다.

예외 형식조건

ArgumentOutOfRangeException

startIndexlength가 잘못된 경우

ArgumentNullException

source, startIndex, destination 또는 length가 Null 참조(Visual Basic의 경우 Nothing)인 경우

이 메서드를 사용하여 1차원 .NET 기반 배열의 하위 집합을 관리되지 않는 C 스타일 배열에 복사할 수 있습니다.

Note참고

이 메서드는 신뢰할 수 없는 코드에서 호출되지 않도록 SecurityAction.LinkDemand를 사용합니다. SecurityPermissionAttribute.UnmanagedCode 권한을 가지려면 직접 실행 호출자만 필요합니다. 부분적으로 신뢰할 수 있는 코드에서 특정 코드를 호출하는 경우 유효성 검사 없이 사용자 입력을 Marshal 클래스 메서드로 전달하지 마십시오. LinkDemand 멤버 사용에 대한 중요한 제한 사항은 Demand와 LinkDemand 비교를 참조하십시오.

다음 코드 예제에서는 관리되지 않는 메모리에 배열을 복사한 다음 관리되지 않는 배열을 다시 관리되는 메모리에 복사합니다.

using System;
using System.Runtime.InteropServices;

class Example
{

    static void Main()
    {
        // Create a managed array.
        short[] managedArray = { 1, 2, 3, 4 };

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

        IntPtr pnt = Marshal.AllocHGlobal(size);

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

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

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

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

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

        }
        finally
        {
            // Free the unmanaged memory.
            Marshal.FreeHGlobal(pnt);
        }
        


    }

}

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2015 Microsoft