> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XMemVirtualAlloc

> XMemVirtualAlloc

# XMemVirtualAlloc

호출 프로세스의 가상 주소 공간에서 페이지 영역을 예약, 커밋 또는 상태 변경합니다.

<Note>
  표준 Win32 <a href="https://learn.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-virtualalloc" target="_blank">VirtualAlloc</a>과 달리 이 함수로 할당된 메모리는 자동으로 0으로 초기화되도록 보장되지 *않습니다*.
</Note>

## 구문

```cpp theme={null}
PVOID XMemVirtualAlloc(  
         PVOID BaseAddress,  
         SIZE_T Size,  
         DWORD AllocationType,  
         ULONGLONG XMemFlags,  
         DWORD PageProtection  
)  
```

### 매개 변수

*BaseAddress*   \_In\_opt\_<br />형식: PVOID

할당할 영역의 시작 주소입니다. 메모리가 예약 중인 경우 지정된 주소는 할당 세분성(XBOX에서는 4K, 64K 또는 2MB)의 가장 가까운 배수로 반내림됩니다. 메모리가 이미 예약되어 있고 커밋 중인 경우 주소는 다음 페이지 경계로 반내림됩니다. 이 매개 변수가 NULL이면 시스템이 영역을 할당할 위치를 결정합니다.

<br />

*Size*   \_In\_<br />형식: SIZE\_T

영역의 크기(바이트)입니다. *BaseAddress* 매개 변수가 NULL인 경우 이 값은 다음 페이지 경계로 반올림됩니다. 그렇지 않으면 할당된 페이지에는 \_BaseAddress\_에서 *BaseAddress*+*Size* 범위 내의 하나 이상의 바이트를 포함하는 모든 페이지가 포함됩니다. 즉, 페이지 경계에 걸쳐 있는 2바이트 범위는 두 페이지가 모두 할당된 영역에 포함되도록 합니다.

<br />

*AllocationType*   \_In\_<br />형식: DWORD

메모리 할당 유형입니다. 이 매개 변수에는 다음 값 중 하나가 포함되어야 합니다.

| 값 | 의미 | |
| - | - | - |
| **MEM\_COMMIT**<br />0x00001000 | 지정된 예약된 메모리 페이지에 대해 (전체 메모리 크기에서) 메모리 청구를 할당합니다. 한 번에 페이지를 예약하고 커밋하려면 \`MEM\_COMMIT | MEM\_RESERVE\`로 **XMemVirtualAlloc**을 호출합니다.<br />**MEM\_RESERVE** 없이 **MEM\_COMMIT**과 NULL이 아닌 \_BaseAddress\_를 지정하여 특정 주소 범위를 커밋하려는 시도는 전체 범위가 이미 예약되지 않은 경우 실패합니다. 결과 오류 코드는 **ERROR\_INVALID\_ADDRESS**입니다.<br />이미 커밋된 페이지를 커밋하려는 시도가 함수 실패를 유발하지는 않습니다. 즉, 각 페이지의 현재 커밋 상태를 먼저 확인하지 않고 페이지를 커밋할 수 있습니다. |
| **MEM\_RESERVE**<br />0x00002000 | 메모리에 실제 물리적 저장소를 할당하지 않고 프로세스의 가상 주소 공간 범위를 예약합니다. 예약된 페이지는 **XMemVirtualAlloc** 함수에 대한 후속 호출에서 커밋하거나 **XMemMapPhysicalPages**를 사용하여 물리적 페이지를 직접 매핑할 수 있습니다.<br />**malloc** 및 **new**와 같은 다른 메모리 할당 함수는 해제될 때까지 예약된 메모리 범위를 사용할 수 없습니다. <br /><br />XBOX의 \_Microsoft Game Development Kit(GDK)\_의 새 메모리 관리자는 예약 시점에 페이지 보호 및 캐시 일관성 설정이 필요하며, 이는 이전 버전의 XBOX OS에서 변경된 사항입니다. | |
| **MEM\_RESERVE\_PLACEHOLDER**<br />0x00040000 | 자리 표시자는 가상 주소를 예약하지만 VA를 페이지 크기 또는 페이지 보호로 잠그지 않습니다. 페이지 크기 및 페이지 보호 선택은 **MEM\_REPLACE\_PLACEHOLDER**를 사용하여 자리 표시자를 실제 예약 또는 커밋으로 대체할 때 선택됩니다. 자리 표시자를 생성하려면 **MEM\_RESERVE \| MEM\_RESERVE\_PLACEHOLDER** 및 PageProtection을 **PAGE\_NOACCESS**로 설정하여 **XMemVirtualAlloc**을 호출합니다. **MEM\_RESERVE\_PLACEHOLDER**를 사용하면 항상 2MB 정렬된 주소가 반환되어 나중에 **MEM\_2MB\_PAGES**와 함께 사용할 수 있습니다. 그러나 일단 예약되면 자리 표시자는 VirtualFree를 **MEM\_RELEASE \| MEM\_PRESERVE\_PLACEHOLDER**와 함께 사용하여 어떤 세분성(4K, 64K 또는 2MB)에서든지 분할될 수 있습니다. | |
| **MEM\_REPLACE\_PLACEHOLDER**<br />0x00004000 | 자리 표시자를 일반 사설 할당으로 대체합니다. 자리 표시자를 대체할 때 BaseAddress와 Size는 자리 표시자의 것과 정확히 일치해야 합니다. 자리 표시자를 사설 할당으로 대체한 후 해당 할당을 자리 표시자로 다시 해제하려면 **VirtualFree** 및 **VirtualFreeEx**의 **dwFreeType** 매개 변수를 참조하세요. | |

이 매개 변수는 다음 값을 지정할 수도 있습니다.

| 값 | 의미 |
| - | - |
| **MEM\_2MB\_PAGES**<br />0x20000000 | 2MB의 페이지 크기를 지정합니다. |
| **MEM\_64K\_PAGES**<br />0x20400000 | 64K의 페이지 크기를 지정합니다. |

<Note>
  ERA 타이틀의 경우 **MEM\_LARGE\_PAGES**는 64K 페이지를 나타냈고, Windows 데스크톱에서는 2MB 페이지를 나타냅니다. 모호성으로 인해 \_Microsoft Game Development Kit(GDK)\_에서 제거되었습니다.
</Note>

<br />

*XMemFlags*   \_In\_<br />형식: ULONGLONG

XBOX에서 특정 특수 메모리 유형을 가져오는 데 사용됩니다. 이 매개 변수에는 다음 값 중 하나가 포함되어야 합니다.

| 값 | 의미 |
| - | - |
| **XMEM\_CPU**<br />0x00000001 | CPU에서만 액세스할 수 있는 메모리를 할당합니다. |
| **XMEM\_GRAPHICS**<br />0x00000003 | CPU와 GPU 모두에서 액세스할 수 있는 메모리를 할당합니다. **XMEM\_GRAPHICS**로 커밋된 모든 메모리는 GPU의 페이지 테이블에 매핑됩니다. |
| **XMEM\_GRAPHICS\_32BIT\_ADDRESS**<br />0x00000007 | 자동 할당된 주소가 주소 공간의 낮은 4GB에 있음을 지정합니다. 이 플래그를 사용하여 커밋된 메모리는 GPU에서도 액세스할 수 있습니다. |

XBOX에서는 상위 비트가 사용되지 않도록 보장하는 제한된 가상 메모리 주소를 사용하여 메모리를 할당할 수 있습니다. 다음 값 중 하나를 사용하면 주소가 표시된 비트 수를 사용하도록 제한됩니다. **XMEM\_40BIT\_ADDRESS** (0x00007000ULL), **XMEM\_41BIT\_ADDRESS** (0x00006000ULL), **XMEM\_42BIT\_ADDRESS** (0x00005000ULL), **XMEM\_43BIT\_ADDRESS** (0x00004000ULL), **XMEM\_44BIT\_ADDRESS** (0x00003000ULL), **XMEM\_45BIT\_ADDRESS** (0x00002000ULL), **XMEM\_46BIT\_ADDRESS** (0x00001000ULL).

<Note>
  그래픽 메모리는 D3D12Device가 생성되기 전이나 D3DConfigureVirtualMemory가 호출되기 전에 할당할 수 없습니다. GPU에서 볼 수 있는 메모리가 요청되면 타이틀은 명시적인 그래픽 페이지 보호 플래그도 지정해야 *합니다*. CPU 페이지 보호 설정을 기반으로 하는 기본값은 더 이상 없습니다. 이는 이전 XBOX OS 버전에서 변경된 사항입니다.
</Note>

이 매개 변수는 다음 값을 지정할 수도 있습니다.

| 값 | 의미 |
| - | - |
| **XMEM\_TOOL**<br />0x00000010 | 할당이 타이틀 파티션 대신 도구 파티션에 청구됨을 지정합니다. 이 플래그를 사용하려면 *AllocationType* 매개 변수에 **MEM\_2MB\_PAGES** 또는 **MEM\_64K\_PAGES**가 지정되어야 합니다. |
| **XMEM\_MAPPABLE**<br />0x00000020 | 할당이 [XMemMapPhysicalPages](/ko/reference/system/xmem/functions/xmemmapphysicalpages)를 통한 물리적 페이지 매핑에 사용될 주소 예약임을 지정합니다. 이 플래그를 사용하려면 *AllocationType* 매개 변수에 **MEM\_RESERVE** 및 **MEM\_2MB\_PAGES** 또는 **MEM\_64K\_PAGES**가 지정되어야 합니다. |

Anaconda 디바이스 및 Anaconda를 에뮬레이션하는 Dante 디바이스에서 고급 타이틀 메모리 모드를 사용하는 동안 다음 매개 변수도 적용할 수 있습니다. 이 매개 변수는 다른 모든 경우에는 무시됩니다.

<Note>
  이 플래그는 선택 사항입니다. 지정되지 않은 경우 모든 그래픽 할당은 기본적으로 XMEM\_GPU\_OPTIMAL\_BANDWIDTH\_PREFERRED를 사용하고 다른 모든 할당은 기본적으로 XMEM\_STANDARD\_BANDWIDTH\_PREFERRED를 사용합니다.
</Note>

| 값 | 의미 |
| - | - |
| **XMEM\_STD\_BW\_REQ** 또는 <br />**XMEM\_STANDARD\_BANDWIDTH\_REQUIRED**<br />0x00000080 | 할당이 표준 대역폭 메모리를 사용하여 충족되어야 함을 지정합니다. |
| **XMEM\_STD\_BW\_PREF** 또는 <br />**XMEM\_STANDARD\_BANDWIDTH\_PREFERRED**<br />0x00000180 | 할당이 표준 대역폭 메모리를 선호해야 하며 표준 대역폭 메모리가 고갈된 경우에만 GPU 최적 대역폭 메모리를 사용해야 함을 지정합니다. |
| **XMEM\_GPU\_OPTBW\_REQ** 또는 <br />**XMEM\_GPU\_OPTIMAL\_BANDWIDTH\_REQUIRED**<br />0x00000280 | 할당이 GPU 최적 대역폭 메모리를 사용하여 충족되어야 함을 지정합니다. |
| **XMEM\_GPU\_OPTBW\_PREF** 또는 <br />**XMEM\_GPU\_OPTIMAL\_BANDWIDTH\_PREFERRED**<br />0x00000380 | 할당이 GPU 최적 대역폭 메모리를 선호해야 하며 GPU 최적 대역폭 메모리가 고갈된 경우에만 표준 대역폭 메모리를 사용해야 함을 지정합니다. |

*XMemFlags* 매개 변수에는 선택적 4자 코드 태그가 포함되어 있습니다. 문자는 a-z, A-Z, 0-9 및 \$ 중 어느 것이든 될 수 있습니다. 이 [XMemMakeTag](/ko/reference/system/xmem/functions/xmemmaketag) 함수를 사용하여 올바른 비트 위치에 태그 값의 올바른 인코딩을 구성할 수 있습니다. 태그는 예약이 아닌 커밋된 메모리 영역에만 연결할 수 있습니다. 이 4자 코드 태그는 매개 변수의 상위 24비트로 표시됩니다. 태그는 [XMemVirtualQuery](/ko/reference/system/xmem/functions/xmemvirtualquery)를 통해 검색할 수 있으며 PIX 메모리 분석에도 표시됩니다.

예제:

```cpp theme={null}
PVOID mem = XMemVirtualAlloc(NULL, size, MEM_64K_PAGES | MEM_COMMIT, XMemMakeTag('Fred') | XMEM_CPU, PAGE_READWRITE);
```

<br />

*PageProtection*   \_In\_<br />형식: DWORD

할당할 페이지 영역에 대한 메모리 보호입니다. 페이지가 커밋 중인 경우 <a href="https://learn.microsoft.com/en-us/windows/desktop/Memory/memory-protection-constants">메모리 보호 상수</a> 중 하나를 지정할 수 있습니다.

*PageProtection* 매개 변수에 다음 XBOX 관련 값이 허용되며, **XMEM\_GRAPHICS** 또는 **XMEM\_GRAPHICS\_32BIT\_ADDRESS**가 지정된 경우 하나가 필요합니다. 이 요구 사항은 이전 버전의 XBOX OS에서 변경된 사항입니다. **XMEM\_GRAPHICS**로 할당된 범위 내의 메모리 주소에 대해 다른 메모리 관리 함수(예: <a href="https://learn.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-virtualprotect">VirtualProtect</a>)에도 이 값을 지정할 수 있습니다.

| 값 | 의미 |
| - | - |
| **PAGE\_GRAPHICS\_NOACCESS**<br />0x0800 | GPU에서 메모리에 액세스할 수 없음을 지정합니다. |
| **PAGE\_GRAPHICS\_READONLY**<br />0x1000 | GPU에서 메모리가 읽기 전용임을 지정합니다. |
| **PAGE\_GRAPHICS\_READWRITE**<br />0x2000 | GPU에서 메모리가 읽기-쓰기임을 지정합니다. |
| **PAGE\_GRAPHICS\_EXECUTE**<br />0x4000<br /><br />**GRAPHICS\_EXECUTE\_READ**<br />0x8000<br /><br />**PAGE\_GRAPHICS\_EXECUTE\_READWRITE**<br />0x10000 | GPU에서 메모리를 실행할 수 있음을 지정합니다. 이는 명령 버퍼에 필요합니다. |

이 매개 변수는 다음 값을 지정할 수도 있습니다.

| 값 | 의미 |
| - | - |
| **PAGE\_GRAPHICS\_COHERENT**<br />0x20000 | GPU와 공유되는 메모리가 CPU 및 GPU 캐시 간에 일관성을 유지하도록 지정합니다. |
| **PAGE\_GRAPHICS\_NOCACHE**<br />0x40000 | GPU에서 액세스할 때 메모리가 캐시되지 않도록 지정합니다. 이 플래그는 XBOX Series X\|S 콘솔에만 적용됩니다. |

### 반환 값

형식: PVOID

함수가 성공하면 반환 값은 할당된 페이지 영역의 기본 주소입니다.

함수가 실패하면 반환 값은 **NULL**입니다. 확장 오류 정보를 가져오려면 <a href="https://msdn.microsoft.com/library/windows/desktop/ms679360(v=vs.85).aspx">GetLastError</a>를 호출하세요.

## 설명

각 페이지에는 연결된 <a href="https://learn.microsoft.com/en-us/windows/desktop/Memory/page-state">페이지 상태</a>가 있습니다. **XMemVirtualAlloc** 함수는 다음 작업을 수행할 수 있습니다.

* 예약된 페이지 영역 커밋
* 사용 가능한 페이지 영역 예약
* 사용 가능한 페이지 영역을 동시에 예약 및 커밋

**XMemVirtualAlloc**은 예약된 페이지를 예약할 수 없습니다. 이미 커밋된 페이지를 커밋할 수 있습니다. 즉, 이미 커밋되었는지 여부에 관계없이 페이지 범위를 커밋할 수 있으며 함수가 실패하지 않습니다.

**XMemVirtualAlloc**을 사용하여 페이지 블록을 예약한 다음 예약된 블록에서 개별 페이지를 커밋하기 위해 **XMemVirtualAlloc**에 대한 추가 호출을 수행할 수 있습니다. 이를 통해 프로세스는 필요할 때까지 물리적 저장소를 사용하지 않고 가상 주소 공간의 범위를 예약할 수 있습니다.

*BaseAddress* 매개 변수가 **NULL**이 아닌 경우 함수는 *BaseAddress* 및 *Size* 매개 변수를 사용하여 할당할 페이지 영역을 계산합니다. 전체 페이지 범위의 현재 상태는 *AllocationType* 매개 변수에 지정된 할당 유형과 호환되어야 합니다. 그렇지 않으면 함수가 실패하고 페이지가 할당되지 않습니다. 이 호환성 요구 사항은 앞서 언급한 대로 이미 커밋된 페이지를 커밋하는 것을 배제하지 않습니다.

**XMemVirtualAlloc** 함수를 사용하여 물리적 페이지 매핑에 지정된 호출 프로세스의 가상 주소 공간 내에 메모리 영역을 예약할 수 있습니다. 그런 다음 이 메모리 영역을 사용하여 애플리케이션의 요구에 따라 물리적 페이지를 가상 메모리에 매핑하고 해제할 수 있습니다. **MEM\_RESERVE** 및 **MEM\_64K\_PAGES** 값은 *AllocationType* 매개 변수에 설정되어야 합니다. **MEM\_COMMIT** 값은 설정되어서는 안 됩니다. *XMemFlags* 매개 변수에 **XMEM\_MAPPABLE**이 설정되어야 합니다. 이렇게 예약된 주소 공간은 [XMemMapPhysicalPages](/ko/reference/system/xmem/functions/xmemmapphysicalpages) API를 사용하여 커밋됩니다.

<a href="https://learn.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-virtualfree">VirtualFree</a> 함수는 커밋된 페이지의 커밋을 해제하고 페이지의 저장소를 해제하거나, 커밋된 페이지의 커밋을 해제하고 동시에 해제할 수 있습니다. 또한 예약된 페이지를 해제하여 사용 가능한 페이지로 만들 수도 있습니다.

XBOX 관련 메모리 특성에 대한 확장을 제공하는 것 외에도 이 API는 반환된 메모리가 0으로 초기화된다는 보장을 강제하지 않는다는 점에서 <a href="https://learn.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-virtualalloc">VirtualAlloc</a>과 다릅니다. 또한 **XMemVirtualAlloc**은 이전 메모리 콘텐츠를 유지한다는 보장도 하지 않습니다. 게임에서 **XMemVirtualAlloc**의 대부분의 사용 사례는 그래픽 메모리를 가져오는 것(일반적으로 0으로 초기화되는 것에서 이점을 얻지 못함) 또는 0으로 초기화하는 것에서 거의 유용한 값을 얻지 못하는 힙 구현에 메모리를 추가하는 것을 포함합니다. 또한 호출자가 원하는 시점에 반환 메모리를 0으로 초기화하는 것을 구현하는 것은 사소한 일입니다. <a href="https://learn.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-virtualalloc">VirtualAlloc</a>의 이러한 보장을 강제하지 않음으로써 **XMemVirtualAlloc**의 구현은 더 높은 성능을 제공할 수 있는 더 많은 유연성을 갖게 됩니다.

**XMemVirtualAlloc**은 이 API 호출을 통해 얻은 메모리를 즉시 사용할 수 있다는 점에서도 <a href="https://learn.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-virtualalloc">VirtualAlloc</a>과 다릅니다. 반대로 <a href="https://learn.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-virtualalloc">VirtualAlloc</a>이 반환한 메모리 주소는 값비싼 페이지 폴트 작업을 통해 첫 번째 액세스 시에만 물리적 페이지로 채워집니다.

**XMemVirtualAlloc**으로 할당된 메모리는 <a href="https://learn.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-virtualfree">VirtualFree</a>로 해제되어야 합니다.

**PAGE\_NOCACHE** 및 **PAGE\_WRITECOMBINE** 페이지 보호 플래그는 메모리 예약 시점에 고정되며 나중에 커밋 요청 중에 변경할 수 없습니다. 메모리가 커밋된 경우 이러한 플래그 중 하나의 상태를 변경하려는 시도는 자동으로 무시됩니다. 메모리 커밋은 성공하지만 메모리는 이러한 플래그에 대해 원래 상태를 갖습니다.

예제:

```cpp theme={null}
// 기본(4K) 페이지를 사용하여 표준 CPU 전용 메모리 할당
PVOID cpuMemory = XMemVirtualAlloc (NULL,
                                    1024 * 1024,
                                    MEM_RESERVE | MEM_COMMIT,
                                    XMEM_CPU,
                                    PAGE_READWRITE);
```

```cpp theme={null}
// 64K 페이지를 사용하여 1MB의 도구 메모리 할당
PVOID cpu64kmemory = XMemVirtualAlloc (NULL,
                                       1024 * 1024,
                                       MEM_64K_PAGES | MEM_RESERVE | MEM_COMMIT,
                                       XMEM_TOOL | XMEM_CPU,
                                       PAGE_READWRITE);
```

```cpp theme={null}
// 2MB 그래픽 메모리 할당
PVOID gfx64kmemory = XMemVirtualAlloc (NULL,
                                       2 * 1024 * 1024,
                                       MEM_2MB_PAGES | MEM_RESERVE | MEM_COMMIT,
                                       XMEM_GRAPHICS,
                                       PAGE_READWRITE | PAGE_GRAPHICS_READONLY);
```

```cpp theme={null}
// 32b 주소 공간에서 64K 페이지를 사용하여 1MB의 그래픽 메모리 할당
PVOID gfxmemory32b = XMemVirtualAlloc (NULL,
                                       1024 * 1024,
                                       MEM_64K_PAGES | MEM_RESERVE | MEM_COMMIT,
                                       XMEM_GRAPHICS_32BIT_ADDRESS,
                                       PAGE_READONLY | PAGE_GRAPHICS_READWRITE);
```

```cpp theme={null}
// 64K 페이지를 사용하여 1GB의 CPU 표시 VA 공간 예약
PVOID cpuReserve = XMemVirtualAlloc (NULL,
                                     1024 * 1024 * 1024,
                                     MEM_64K_PAGES | MEM_RESERVE,
                                     XMEM_CPU,
                                     PAGE_READWRITE);

// 이제 예약의 처음 2MB를 커밋합니다
PVOID cpuCommit = XMemVirtualAlloc (cpuReserve,
                                    2 * 1024 * 1024,
                                    MEM_COMMIT,
                                    XMEM_CPU,
                                    PAGE_READWRITE);
```

```cpp theme={null}
// 직접 물리적 페이지 매핑에 사용될 4MB의 표시 VA 공간 예약
// 물리적 페이지는 항상 64KB이고 이 예약은 모든 할당이 32 또는 64 페이지(2MB\4MB) 블록으로
// 있을 것으로 가정합니다
PVOID physicalReserve = XMemVirtualAlloc (NULL,
                                          4 * 1024 * 1024,
                                          MEM_2MB_PAGES | MEM_RESERVE,
                                          XMEM_GRAPHICS | XMEM_MAPPABLE,
                                          PAGE_READONLY | PAGE_GRAPHICS_COHERENT | PAGE_GRAPHICS_READWRITE);
```

## 요구 사항

**헤더:** xmem.h

**라이브러리:** xmem.lib

**지원 플랫폼:** XBOX One 제품군 콘솔 및 XBOX Series 콘솔

## 함께 보기

[XMem 참조](/ko/reference/system/xmem/xmem_members)<br />[XMemMapPhysicalPages](/ko/reference/system/xmem/functions/xmemmapphysicalpages)<br /><a href="https://learn.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-virtualfree">VirtualFree</a>


## Related topics

- [Microsoft GDK Game OS 메모리 관리자 사용](/ko/build/console-features/memory/system-memory-working.md)
- [XMemVirtualQuery](/ko/reference/system/xmem/functions/xmemvirtualquery.md)
- [XMemMapPhysicalPages](/ko/reference/system/xmem/functions/xmemmapphysicalpages.md)
- [XMemMapPhysicalPagesScatter](/ko/reference/system/xmem/functions/xmemmapphysicalpagesscatter.md)
- [XMEM_OPTIONS](/ko/reference/system/xmem/enums/xmem_options.md)
