Share via


_freea

Désalloue ou libère un bloc mémoire.

void _freea( 
   void *memblock 
);

Paramètres

  • memblock
    Bloc mémoire alloué précédemment pour etre libéré.

Valeur de retour

Aucun.

Notes

La fonction _freea desalloue un bloc de mémoire (memblock) qui a été allouée précedemment par un appel à _malloca. _freea vérifie si la mémoire a été allouée sur le segment ou la pile. Si elle a été allouée dans la pile, _freea n'a aucun effet. Si elle a été allouée sur le segment, 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, Tenter de libérer un pointeur invalide (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 constate que la mémoire est allouée sur le segment. Que la mémoire soit sur le segment ou que la pile soit determinée par un marqueur placé en mémoire à l'adresse précédant immédiatement la mémoire allouée.

Si une erreur se produit en libérant 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.

Lorsqu'un bloc de mémoire a été libéré, _heapmin réduit la quantité de mémoire disponible sur le segment en fusionnant les régions inutilisées et en les libérant dans le système d'exploitation. La mémoire libérée qui n'est pas libérée vers le système d'exploitation est restaurée au pool disponible et est de nouveau disponible pour l'allocation.

Un appel à _freea doit accompagner tous les appels à _malloca. C'est également une erreur d'appeler _freea deux fois 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 les fonctionnalités de _malloc_dbg activé en définissant _CRTDBG_MAP_ALLOC, il est plus facile de recherche les appels manquants ou dupliqués à _freea. Pour plus d'informations sur la gestion du tas pendant le processus de débogage, consultez The CRT Debug Heap.

_freea est marqué comme__declspec(noalias), ce qui signifie que la fonction est assurée de 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 sur la 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 Exemples d'appel de plateforme.

Voir aussi

Référence

Allocation de mémoire

_malloca

calloc

malloc

_malloc_dbg

realloc

_free_dbg

_heapmin