Marshal.AllocHGlobal 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
프로세스의 관리되지 않는 메모리에서 메모리를 할당합니다.
오버로드
AllocHGlobal(Int32) |
지정된 바이트 수를 사용하여 프로세스의 관리되지 않는 메모리에서 메모리를 할당합니다. |
AllocHGlobal(IntPtr) |
지정된 바이트 수에 대한 포인터를 사용하여 프로세스의 관리되지 않는 메모리에서 메모리를 할당합니다. |
AllocHGlobal(Int32)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
지정된 바이트 수를 사용하여 프로세스의 관리되지 않는 메모리에서 메모리를 할당합니다.
public:
static IntPtr AllocHGlobal(int cb);
[System.Security.SecurityCritical]
public static IntPtr AllocHGlobal (int cb);
public static IntPtr AllocHGlobal (int cb);
[<System.Security.SecurityCritical>]
static member AllocHGlobal : int -> nativeint
static member AllocHGlobal : int -> nativeint
Public Shared Function AllocHGlobal (cb As Integer) As IntPtr
매개 변수
- cb
- Int32
메모리에 필요한 바이트 수입니다.
반환
nativeint
새로 할당된 메모리에 대한 포인터입니다. 이 메모리는 FreeHGlobal(IntPtr) 메서드를 사용하여 해제해야 합니다.
- 특성
예외
요청을 충족할 메모리가 부족합니다.
예제
다음 예제에서는 AllocHGlobal 메서드를 호출하는 방법을 보여 줍니다. 이 코드 예제는 Marshal 클래스에 제공된 더 큰 예제의 일부입니다.
// Demonstrate how to call GlobalAlloc and
// GlobalFree using the Marshal class.
IntPtr hglobal = Marshal::AllocHGlobal(100);
Marshal::FreeHGlobal(hglobal);
// Demonstrate how to call GlobalAlloc and
// GlobalFree using the Marshal class.
IntPtr hglobal = Marshal.AllocHGlobal(100);
Marshal.FreeHGlobal(hglobal);
' Demonstrate how to call GlobalAlloc and
' GlobalFree using the Marshal class.
Dim hglobal As IntPtr = Marshal.AllocHGlobal(100)
Marshal.FreeHGlobal(hglobal)
설명
중요하다
이 네이티브 메모리 할당자는 Windows 플랫폼의 특정 Win32 API에서 호출할 때 단독으로 사용해야 하는 레거시 API입니다. .NET 6 이상을 대상으로 하는 경우 모든 플랫폼에서 NativeMemory 클래스를 사용하여 네이티브 메모리를 할당합니다. .NET 6 이하를 대상으로 하는 경우 모든 플랫폼에서 AllocCoTaskMem 사용하여 네이티브 메모리를 할당합니다.
AllocHGlobal Marshal 클래스의 두 메모리 할당 방법 중 하나입니다. (Marshal.AllocCoTaskMem 다른 항목입니다.) 이 메서드는 Kernel32.dllWin32 LocalAlloc 함수를 노출합니다.
AllocHGlobal
LocalAlloc
호출하면 LMEM_FIXED
플래그가 전달되므로 할당된 메모리가 제자리에 잠깁니다. 또한 할당된 메모리가 0으로 채워지지 않습니다.
추가 정보
적용 대상
AllocHGlobal(IntPtr)
- Source:
- Marshal.Unix.cs
- Source:
- Marshal.Unix.cs
- Source:
- Marshal.Unix.cs
지정된 바이트 수에 대한 포인터를 사용하여 프로세스의 관리되지 않는 메모리에서 메모리를 할당합니다.
public:
static IntPtr AllocHGlobal(IntPtr cb);
[System.Security.SecurityCritical]
public static IntPtr AllocHGlobal (IntPtr cb);
public static IntPtr AllocHGlobal (IntPtr cb);
[<System.Security.SecurityCritical>]
static member AllocHGlobal : nativeint -> nativeint
static member AllocHGlobal : nativeint -> nativeint
Public Shared Function AllocHGlobal (cb As IntPtr) As IntPtr
매개 변수
- cb
-
IntPtr
nativeint
메모리에 필요한 바이트 수입니다.
반환
nativeint
새로 할당된 메모리에 대한 포인터입니다. 이 메모리는 FreeHGlobal(IntPtr) 메서드를 사용하여 해제해야 합니다.
- 특성
예외
요청을 충족할 메모리가 부족합니다.
설명
중요하다
이 네이티브 메모리 할당자는 Windows 플랫폼의 특정 Win32 API에서 호출할 때 단독으로 사용해야 하는 레거시 API입니다. .NET 6 이상을 대상으로 하는 경우 모든 플랫폼에서 NativeMemory 클래스를 사용하여 네이티브 메모리를 할당합니다. .NET 6 이하를 대상으로 하는 경우 모든 플랫폼에서 AllocCoTaskMem 사용하여 네이티브 메모리를 할당합니다.
AllocHGlobal Marshal 클래스의 두 메모리 할당 방법 중 하나입니다. (Marshal.AllocCoTaskMem 다른 항목입니다.) 이 메서드는 Kernel32.dllWin32 LocalAlloc 함수를 노출합니다.
AllocHGlobal
LocalAlloc
호출하면 LMEM_FIXED
플래그가 전달되므로 할당된 메모리가 제자리에 잠깁니다. 또한 할당된 메모리가 0으로 채워지지 않습니다.
예제 코드는 Marshal 및 AllocHGlobal참조하세요.
추가 정보
적용 대상
.NET