_freea

Libère un bloc de mémoire.

Syntaxe

void _freea(
   void *memblock
);

Paramètres

memblock
Bloc mémoire précédemment alloué à libérer.

Valeur retournée

Aucune.

Notes

La _freea fonction désalloue un bloc de mémoire (memblock) qui a été précédemment alloué par un appel à _malloca. _freea vérifie si la mémoire a été allouée sur le tas ou la pile. Si elle a été allouée sur la pile, _freea n’exécute aucune opération. Si elle a été allouée sur le tas, le nombre d’octets libérés est équivalent au nombre d’octets demandés quand le bloc a été alloué. Si memblock c’est NULLle cas, le pointeur est ignoré et _freea retourne immédiatement. Toute tentative de libération d’un pointeur non valide (pointeur vers un bloc de mémoire qui n’a pas été alloué par _malloca) peut affecter les demandes d’allocation suivantes et provoquer des erreurs.

_freea appelle free en interne s’il trouve que la mémoire est allouée sur le tas. Un marqueur placé en mémoire à l’adresse qui précède immédiatement la mémoire allouée détermine si celle-ci est sur le tas ou la pile.

Si une erreur se produit pendant la libération de la mémoire, errno est défini avec les informations du système d'exploitation sur la nature de la défaillance. Pour plus d'informations, voir errno, _doserrno, _sys_errlist et _sys_nerr.

Une fois qu’un bloc de mémoire a été libéré, _heapmin réduit la quantité de mémoire libre sur le tas en fusionnant les régions inutilisées et en les libérant sur le système d’exploitation. La mémoire libérée qui n’est pas libérée sur le système d’exploitation est restaurée dans le pool gratuit et est à nouveau disponible pour l’allocation.

Un appel à _freea doit accompagner tous les appels à _malloca. Il s’agit également d’une erreur d’appel _freea à deux reprises sur la même mémoire. Lorsque l’application est liée à une version de débogage des bibliothèques runtime C, en particulier avec _malloc_dbg les fonctionnalités activées en définissant _CRTDBG_MAP_ALLOC, il est plus facile de trouver des appels manquants ou dupliqués à _freea. Pour plus d’informations sur la gestion du tas pendant le processus de débogage, consultez le tas de débogage CRT.

_freea est marqué __declspec(noalias), ce qui signifie que la fonction ne peut pas modifier les variables globales. Pour plus d’informations, consultez noalias.

Spécifications

Fonction En-tête requis
_freea <stdlib.h> et <malloc.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

Consultez l’exemple pour _malloca.

Voir aussi

Allocation de mémoire
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin