■ Marshal 클래스 : 비관리 메모리 할당하기

------------------------------------------------------------------------------------------------------------------------

using System;

using System.Runtime.InteropServices;

 

int byteCount = 256;

 

// 소스 바이트 배열을 설정한다.

byte[] sourceByteArray = new byte[byteCount];

 

for(int i = 0; i < byteCount; i++)

{

    sourceByteArray[i] = (byte)i;

}

 

// 메모리를 할당받는다.

IntPtr targetHandle = Marshal.AllocHGlobal(byteCount);

 

// 소스 바이트 배열의 데이터를 할당받은 메모리에 복사한다.

Marshal.Copy(sourceByteArray, 0, targetHandle, byteCount);

 

// 할당받은 메모리의 데이터를 타겟 바이트 배열에 복사한다.

byte[] targetByteArray = new byte[byteCount];

 

Marshal.Copy(targetHandle, targetByteArray, 0, byteCount);

 

for(int i = 0; i < 256; i++)

{

    Console.WriteLine(targetByteArray[i]);

}

 

Marshal.FreeHGlobal(targetHandle);

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요