> ## 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.

# XMemFree

> XMemFree 是 XBOX GDK 上由應用程式定義的記憶體解除配置回呼，與 XMemAlloc 搭配使用以取代預設的遊戲記憶體解除配置器。

# XMemFree

由應用程式定義的記憶體解除配置回呼函式，用來取代預設的記憶體解除配置器。

## 語法

```cpp theme={null}
VOID XMemFree(  
         PVOID Address,  
         ULONGLONG Attributes  
)  
```

### 參數

*Address*   \_In\_<br />類型：PVOID

要釋放之記憶體的位址。

*Attributes*   \_In\_<br />類型：ULONGLONG

配置的屬性。如需詳細資料，請參閱 [XALLOC\_ATTRIBUTES](/zh-TW/reference/system/xmem/structs/xalloc_attributes)。

### 傳回值

類型：VOID

## 備註

如需記憶體配置常式語法的相關資訊，請參閱 [XMEMALLOC\_ROUTINE](/zh-TW/reference/system/xmem/functions/xmemalloc_routine)。

<Note>
  **XMemAlloc** 和 **XMemFree** 預設實作的原始程式碼會安裝為 Microsoft Game Development Kit (GDK) 的一部分。請參閱 `\GXDK\gameKit\Source\amd64\heap.c`。
</Note>

<Note>
  如果您實作自己的 **XMemFree** 函式，絕對不能從中呼叫 Direct3D 12 驅動程式，這一點至關重要。這是因為驅動程式的正常運作可能會導致叫用 **XMemFree**，而且沒有防止遞迴的保護。此需求也延伸至不得對 Direct3D 12 物件執行最終 Release 作業，因為這可能會導致隱含的驅動程式呼叫。
</Note>

*Attributes* 參數的值必須與原始呼叫 [XMemAlloc](/zh-TW/reference/system/xmem/functions/xmemalloc) 時傳入的值相符，這一點很重要。此值是由您的程式碼快取，還是視需要合成，取決於您的實作。

請考慮以下情境：您的基礎配置器會配置對齊 16 位元組邊界的連續 16 位元組區塊，但您要求一個 128 位元組、對齊 64 位元組的區塊；事實上，這類似於關閉小型物件配置器時的 CRT 堆積。

為了處理此要求，配置器實際上可能會配置超過 128 位元組，以便為您對齊位址。這樣做時，它可能會將區塊長度和未對齊區塊的實際起始位址，儲存在它傳回給您的位址之前的 16 位元組區塊中。要正確判斷是否為這種情況，唯一的方法是從 *Attributes* 參數取得完整資訊，以識別所使用的配置器，並正確地沿著鏈結回到所配置區塊的實際起始位置。

*Attributes* 不相符可能會導致損毀、記憶體流失或其他不良行為。

## 需求

**標頭：** xmem.h

**程式庫：** xmem.lib

**支援的平台：** XBOX One 系列主機和 XBOX Series 主機

## 另請參閱

[XMem 參考](/zh-TW/reference/system/xmem/xmem_members)<br />[XMEMALLOC\_ROUTINE](/zh-TW/reference/system/xmem/functions/xmemalloc_routine)<br />[XALLOC\_ATTRIBUTES](/zh-TW/reference/system/xmem/structs/xalloc_attributes)<br />[XMemAlloc](/zh-TW/reference/system/xmem/functions/xmemalloc)<br />[XMemFreeDefault](/zh-TW/reference/system/xmem/functions/xmemfreedefault)


## Related topics

- [XMEMFREE_ROUTINE callback](/reference/system/xmem/functions/xmemfree_routine.md)
- [XMEM_ALLOCATION_HOOKS](/reference/system/xmem/structs/xmem_allocation_hooks.md)
- [XMEMALLOC_ROUTINE callback](/reference/system/xmem/functions/xmemalloc_routine.md)
