_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 NULL
le 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