Skip to main content

XALLOC_ATTRIBUTES

包含描述記憶體配置屬性的值。

語法

成員

Attributes
類型:ULONGLONG
記憶體配置的屬性。 ObjectType
類型:ULONGLONG
配置類型,由執行記憶體配置的子系統定義。如需詳細資訊,請參閱 ObjectType。 PageSize
類型:ULONGLONG
配置的分頁大小。如需允許值的詳細資訊,請參閱 PageSize。 AllocatorId
類型:ULONGLONG
執行配置之子系統的配置器識別碼。每項配置都與一個配置器識別碼相關聯,用來識別要求配置 (或釋放) 記憶體的子系統。配置有三個可能的來源:遊戲、平台和中介軟體元件。如需配置器識別碼的詳細資訊,請參閱 XALLOC_ALLOCATOR_IDS。 Alignment
類型:ULONGLONG
配置所需的對齊類型。如需允許值的詳細資訊,請參閱 Alignment。 MemoryType
類型:ULONGLONG
配置所需的記憶體類型。您可以從數種 GPU 可見的分頁類型和快取行為中選擇其一,或選擇適用於僅限 CPU 記憶體配置的值。如需允許值的詳細資訊,請參閱 MemoryType。 Address32BitMapping
類型:ULONGLONG
如果設定為 1,會強制配置取得低於 4GB 的位址 (例如 GPU 所需)。 reserved
類型:ULONGLONG
保留供內部使用。

備註

XMEMALLOC_ROUTINE 和 XMEMFREE_ROUTINE 語法定義會分別使用此結構來進行記憶體配置和解除配置。
XMemAlloc 和 XMemFree 預設實作的原始程式碼會隨 Microsoft Game Development Kit (GDK) 一併安裝。如需詳細資訊,請參閱 \GXDK\gameKit\Source\amd64\heap.c 中的 XMemAllocDefault 和 XMemFreeDefault 函式。
下列各節提供允許值和配置詳細資料的詳細資訊。

ObjectType

ObjectType 的值由執行配置的配置器定義,您的遊戲可以使用這些值在配置時追蹤不同的物件類型,或依類型改變配置器的行為。 例如,如果您為粒子系統定義了配置器,您可能會為遊戲定義自己的配置器識別碼 TitleAllocatorID_ParticleSystem 並將其設定為 4,同時定義一個集區來容納在引擎中只會與地平面碰撞的粒子。此集區的 ObjectType 識別碼可能是 2,因為您已經將 0 用於發射器,並將 1 用於會碰撞的粒子。這完全取決於您想要追蹤的確切內容,以及引擎的結構方式。 或者,您也可以不定義如此粗略細微度的識別碼;您可以改為依據配置器識別碼來區分不同的配置行為,並將 ObjectType 識別碼純粹用於追蹤用途,讓遊戲中的每個物件類型都有自己的值,而不論子系統為何。 ObjectType 的值必須是介於 0 到 16383 之間的整數。

MemoryType

您可以透過設定 MemoryType 的值來指定要配置的記憶體類型。MemoryType 參數必須設定為下列其中一個值。

PageSize

您可以透過設定 PageSize 的值來指定記憶體配置中使用的分頁大小。此參數可以是下表所示的其中一個值。

Alignment

透過設定 Alignment 的值,您的程式碼會要求傳回的記憶體區塊採用特定對齊方式。您也可以將此參數視為 2n 的值,其中 n 是所需的對齊方式。它可以是下表所示的值。
預設配置器一律會傳回至少 16 位元組的對齊方式。

非圖形記憶體子配置

非圖形記憶體 (使用 XALLOC_MEMTYPE_HEAP_CACHEABLE 配置的記憶體) 會依據配置的分頁大小和對齊方式進行子配置。
  • 4 KB 分頁大小和 16 位元組對齊:
    • 小於 4 KB 的配置會緊密封裝
    • 大於或等於 4 KB 的配置會對齊至 4 KB 的倍數
  • 64 KB 或 2 MB 分頁大小,或 16 位元組以外的對齊方式:
    • <= 4 KB 的配置會無條件進位至 256 位元組的倍數
    • <= 64 KB 的配置會無條件進位至 2 KB 的倍數
    • <= 128 KB 的配置會無條件進位至 128 KB
    • 所有其他配置會無條件進位至 2 MB 邊界

需求

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

另請參閱

GDK 的圖形記憶體概觀
XALLOC_ALLOCATOR_IDS
XMEMALLOC_ROUTINE
XMEMFREE_ROUTINE
XMem
Last modified on October 6, 2026