_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.