Skip to main content

XMemFree

Fonction de rappel de désallocation de mémoire définie par l’application qui remplace le désallocateur de mémoire par défaut.

Syntaxe

Paramètres

Address _In_
Type : PVOID
Adresse de la mémoire à libérer. Attributes _In_
Type : ULONGLONG
Attributs de l’allocation. Reportez-vous à XALLOC_ATTRIBUTES pour plus de détails.

Valeur de retour

Type : VOID

Remarques

Pour plus d’informations sur la syntaxe des routines d’allocation de mémoire, consultez XMEMALLOC_ROUTINE.
Le code source de l’implémentation par défaut de XMemAlloc et XMemFree est installé dans le cadre du Microsoft Game Development Kit (GDK). Consultez \GXDK\gameKit\Source\amd64\heap.c.
Si vous implémentez votre propre fonction XMemFree, il est extrêmement important de ne pas effectuer d’appel au pilote Direct3D 12 à partir de celle-ci. En effet, le fonctionnement normal du pilote peut entraîner l’invocation de XMemFree sans protection contre la récursivité. Cette exigence s’étend au fait de ne pas effectuer d’opérations Release finales sur des objets Direct3D 12, car cela peut entraîner des appels implicites au pilote.
Il est important que la valeur du paramètre Attributes corresponde à celle qui a été transmise lors de l’appel initial à XMemAlloc. Le fait que cette valeur soit mise en cache par votre code ou synthétisée au besoin dépend de votre implémentation. Prenons un scénario où votre allocateur sous-jacent alloue des blocs contigus de 16 octets alignés sur une limite de 16 octets, mais où vous demandez un bloc de 128 octets aligné sur 64 octets, ce qui est d’ailleurs semblable au tas CRT si l’allocateur de petits objets est désactivé. Pour traiter cette demande, l’allocateur peut en fait allouer plus de 128 octets, afin de pouvoir aligner l’adresse pour vous. Ce faisant, il pourrait stocker la longueur du bloc et l’adresse de début réelle du bloc non aligné dans le bloc de 16 octets précédant l’adresse qu’il vous retourne. La seule façon de déterminer correctement si c’était le cas est de disposer de l’information complète du paramètre Attributes pour identifier quel allocateur a été utilisé, et de remonter correctement la chaîne jusqu’au début réel du bloc alloué. Le fait de ne pas faire correspondre Attributes pourrait entraîner une corruption, des fuites de mémoire ou d’autres comportements indésirables.

Configuration requise

En-tête : xmem.h Bibliothèque : xmem.lib Plateformes prises en charge : consoles de la famille XBOX One et consoles XBOX Series

Voir aussi

Référence XMem
XMEMALLOC_ROUTINE
XALLOC_ATTRIBUTES
XMemAlloc
XMemFreeDefault
Last modified on October 6, 2026