Skip to main content

XMemFree

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

語法

參數

Address _In_
類型:PVOID
要釋放之記憶體的位址。 Attributes _In_
類型:ULONGLONG
配置的屬性。如需詳細資料,請參閱 XALLOC_ATTRIBUTES。

傳回值

類型:VOID

備註

如需記憶體配置常式語法的相關資訊,請參閱 XMEMALLOC_ROUTINE。
XMemAlloc 和 XMemFree 預設實作的原始程式碼會安裝為 Microsoft Game Development Kit (GDK) 的一部分。請參閱 \GXDK\gameKit\Source\amd64\heap.c。
如果您實作自己的 XMemFree 函式,絕對不能從中呼叫 Direct3D 12 驅動程式,這一點至關重要。這是因為驅動程式的正常運作可能會導致叫用 XMemFree,而且沒有防止遞迴的保護。此需求也延伸至不得對 Direct3D 12 物件執行最終 Release 作業,因為這可能會導致隱含的驅動程式呼叫。
Attributes 參數的值必須與原始呼叫 XMemAlloc 時傳入的值相符,這一點很重要。此值是由您的程式碼快取,還是視需要合成,取決於您的實作。 請考慮以下情境:您的基礎配置器會配置對齊 16 位元組邊界的連續 16 位元組區塊,但您要求一個 128 位元組、對齊 64 位元組的區塊;事實上,這類似於關閉小型物件配置器時的 CRT 堆積。 為了處理此要求,配置器實際上可能會配置超過 128 位元組,以便為您對齊位址。這樣做時,它可能會將區塊長度和未對齊區塊的實際起始位址,儲存在它傳回給您的位址之前的 16 位元組區塊中。要正確判斷是否為這種情況,唯一的方法是從 Attributes 參數取得完整資訊,以識別所使用的配置器,並正確地沿著鏈結回到所配置區塊的實際起始位置。 Attributes 不相符可能會導致損毀、記憶體流失或其他不良行為。

需求

標頭: xmem.h 程式庫: xmem.lib 支援的平台: XBOX One 系列主機和 XBOX Series 主機

另請參閱

XMem 參考
XMEMALLOC_ROUTINE
XALLOC_ATTRIBUTES
XMemAlloc
XMemFreeDefault
Last modified on October 6, 2026