_freea

libère ou libère un bloc de mémoire.

void _freea( 
   void *memblock 
);

Paramètres

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

Valeur de retour

Aucun

Notes

La fonction d' _freealibère un bloc de mémoire (memblock) qui a déjà été alloué par un appel à _malloca._freea vérifie si la mémoire est allouée sur le tas ou la pile.S'il a été alloué sur la pile, _freea ne fait rien.S'il a été alloué sur le tas, le nombre d'octets libérés est équivalent au nombre d'octets demandés lorsque le bloc a été alloué.Si memblock est NULL, le pointeur est ignoré et _freea retourne immédiatement.La tentative de libérer un pointeur valide (un pointeur vers un bloc de mémoire qui n'a pas été alloué par _malloca) peut affecter des demandes d'allocation suivantes et provoquer des erreurs.

_freea appelle free en interne s'il détecte que la mémoire est allouée sur le tas.si la mémoire est sur le tas ou la pile est déterminé par une marque placée dans la mémoire à l'adresse juste avant la mémoire allouée.

Si une erreur se produit en libérant de la mémoire, errno est défini avec les informations du système d'exploitation sur la nature de l'échec.Pour plus d'informations, consultez errno, _doserrno, _sys_errlist, et _sys_nerr.

Après un bloc de mémoire a été libéré, _heapmin réduit la quantité de mémoire disponible sur le tas lors de la fusion de régions inutilisées et en les publier sur le système d'exploitation.La mémoire libérée qui n'est pas libérée au système d'exploitation est restaurée au pool et gratuit est disponible pour l'allocation de nouveau.

un appel à _freea doit accompagner tous les appels à _malloca.Elle constitue une erreur pour appeler _freea deux fois sur la même mémoire.Lorsque l'application est liée à une version debug des bibliothèques runtime C, en particulier des configurations de _malloc_dbg activé en définissant _CRTDBG_MAP_ALLOC, il est plus facile de rechercher des manquant ou des appels dupliqués à _freea.Pour plus d'informations sur la façon dont le tas est exécuté pendant le processus de débogage, consultez Le tas de débogage CRT.

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

Configuration requise

Fonction

en-tête requis

_freea

<stdlib.h> et <malloc.h>

Pour plus d'informations de compatibilité, consultez compatibilité dans l'introduction.

Exemple

Consultez l'exemple pour _malloca.

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

Voir aussi

Référence

Allocation de mémoire

_malloca

calloc

malloc

_malloc_dbg

realloc

_free_dbg

_heapmin