> ## 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 est le rappel de désallocation de mémoire défini par l'application sur XBOX GDK, associé à XMemAlloc pour remplacer le désallocateur de mémoire de titre par défaut.

# 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

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

### Paramètres

*Address*   \_In\_<br />Type : PVOID

Adresse de la mémoire à libérer.

*Attributes*   \_In\_<br />Type : ULONGLONG

Attributs de l'allocation. Reportez-vous à [XALLOC\_ATTRIBUTES](/fr-CA/reference/system/xmem/structs/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](/fr-CA/reference/system/xmem/functions/xmemalloc_routine).

<Note>
  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`.
</Note>

<Note>
  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.
</Note>

Il est important que la valeur du paramètre *Attributes* corresponde à celle qui a été transmise lors de l'appel initial à [XMemAlloc](/fr-CA/reference/system/xmem/functions/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](/fr-CA/reference/system/xmem/xmem_members)<br />[XMEMALLOC\_ROUTINE](/fr-CA/reference/system/xmem/functions/xmemalloc_routine)<br />[XALLOC\_ATTRIBUTES](/fr-CA/reference/system/xmem/structs/xalloc_attributes)<br />[XMemAlloc](/fr-CA/reference/system/xmem/functions/xmemalloc)<br />[XMemFreeDefault](/fr-CA/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)
