c#에서 Marshal.Copy () 방법의 사용

2875 단어 StringC#

c#에서 Marshal.Copy 메서드 사용


Marshal.copy () 방법은 위탁 관리 대상 (그룹) 과 비 위탁 관리 대상 (IntPtr) 사이의 내용을 복제하는 데 사용됩니다
함수에는 다음과 같이 여러 개의 리셋이 있습니다.
Copy(array[]()[], Int32, IntPtr, Int32)는 1차원 트랜잭션 8자리 무기호 정수 그룹의 데이터를 비트랜잭션 메모리 포인터로 복사합니다.
Copy(array[]()[], Int32, IntPtr, Int32)는 데이터를 1차원 트랜잭션 문자 그룹에서 비 트랜잭션 메모리 포인터로 복사합니다.
Copy(array[]()[], Int32, IntPtr, Int32)는 데이터를 1차원 트랜잭션 더블 정밀도 부동 소수점 그룹에서 비 트랜잭션 메모리 포인터로 복사합니다.
Copy(array[]()[], Int32, IntPtr, Int32)는 데이터를 1차원 트랜잭션 16비트 기호 정수 그룹에서 비 트랜잭션 메모리 포인터로 복사합니다.
Copy(array[]()[], Int32, IntPtr, Int32)는 데이터를 1차원 트랜잭션 32비트 기호 정수 그룹에서 비 트랜잭션 메모리 포인터로 복사합니다.
Copy(array[]()[], Int32, IntPtr, Int32)는 데이터를 1차원 트랜잭션 64비트 기호 정수 그룹에서 비 트랜잭션 메모리 포인터로 복사합니다.
Copy(IntPtr,array[]()[],Int32,Int32)는 데이터를 비 트랜잭션 메모리 포인터에서 트랜잭션 8자리 무기호 정수 그룹으로 복사합니다.
Copy(IntPtr,array[]()[], Int32, Int32)는 데이터를 비 트랜잭션 메모리 포인터에서 트랜잭션 문자 배열로 복사합니다.
Copy(IntPtr,array[]()[],Int32,Int32)는 데이터를 비 트랜잭션 메모리 포인터에서 트랜잭션 더블 정밀도 부동 소수점 그룹으로 복사합니다.
Copy(IntPtr,array[]()[],Int32,Int32)는 데이터를 비 트랜잭션 메모리 포인터에서 트랜잭션 16비트 기호 정수 그룹으로 복사합니다.
Copy(IntPtr,array[]()[],Int32,Int32)는 데이터를 비 트랜잭션 메모리 포인터에서 트랜잭션 32비트 기호 정수 그룹으로 복사합니다.
Copy(IntPtr, array[]()[], Int32, Int32)는 데이터를 비 트랜잭션 메모리 포인터에서 트랜잭션 64비트 기호 정수 그룹으로 복사합니다.
Copy(IntPtr, array[]()[], Int32, Int32)는 데이터를 비 트랜잭션 메모리 포인터에서 트랜잭션 IntPtr 배열로 복사합니다.
Copy(IntPtr,array[]()[],Int32,Int32)는 데이터를 비 트랜잭션 메모리 포인터에서 트랜잭션 단일 정밀도 부동 소수점 그룹으로 복사합니다.
Copy(array[]()[], Int32, IntPtr, Int32)는 데이터를 1차원 트랜잭션 IntPtr 그룹에서 비 트랜잭션 메모리 포인터로 복사합니다.
Copy(array[]()[], Int32, IntPtr, Int32)는 데이터를 1차원 트랜잭션 단일 정밀도 부동 소수점 그룹에서 비 트랜잭션 메모리 포인터로 복사합니다.
여기서 주의해야 할 것은 두 개의 매개 변수 Int32 유형의 사용이다
Int32 유형의 두 매개 변수는 모두 그룹을 한정하는 데 사용되며, 그 중 하나는 시작 위치를 한정하고 하나는 길이를 한정한다
주의: 길이는 지수 그룹 요소의 개수이지 바이트 수를 가리키는 것이 아닙니다
예:
고전적이에요.
            string name = "xuwei";
            IntPtr pName = Marshal.AllocHGlobal(2*name.Length);
            Marshal.Copy(name.ToCharArray(), 0, pName, name.Length);
            char[] cName = new char[name.Length];
            Marshal.Copy(pName, cName, 0, name.Length);

name.Length=5 (1) pName 포인터에 할당됨
2*name.Length 바이트의 공간
주의: Marshal.AllocHGlobal(Int32 cb)의 매개변수 cb는 할당된 바이트 수입니다.
(2)name에서 변환된char[]의 내용을 pName이 가리키는 메모리에 복사하여 char의 개수, 즉name.Length
(3) cName에 name을 할당합니다.Length 개 char 위치
(4) pName의 내용을 cName 배열에 복사합니다. 길이는name입니다.Length

좋은 웹페이지 즐겨찾기