Condividi tramite


_freea

Dealloca o libera un blocco di memoria.

Sintassi

void _freea(
   void *memblock
);

Parametri

memblock
Blocco di memoria precedentemente allocata da liberare.

Valore restituito

Nessuno.

Osservazioni:

La _freea funzione dealloca un blocco di memoria (memblock) precedentemente allocato da una chiamata a _malloca. _freea controlla se la memoria è stata allocata nell'heap o nello stack. Se è stata allocata nello stack, _freea non esegue alcuna operazione. Se è stata allocata nell'heap, il numero di byte liberati è equivalente al numero di byte richiesto quando il blocco è stato allocato. Se memblock è NULL, il puntatore viene ignorato e _freea restituisce immediatamente . Il tentativo di liberare un puntatore non valido (un puntatore a un blocco di memoria non allocato da _malloca) potrebbe influire sulle richieste di allocazione successive e causare errori.

_freea chiama free internamente se rileva che la memoria viene allocata nell'heap. Se la memoria è nell'heap o lo stack è determinato da un indicatore posizionato nella memoria in corrispondenza dell'indirizzo che precede immediatamente la memoria allocata.

Se si verifica un errore nel liberare la memoria, errno viene impostato con informazioni dal sistema operativo sulla natura dell'errore. Per altre informazioni, vedereerrno, _doserrno, _sys_errliste _sys_nerr.

Dopo che un blocco di memoria è stato liberato, _heapmin riduce al minimo la quantità di memoria libera nell'heap fondendo le aree inutilizzate e rilasciandole nuovamente nel sistema operativo. La memoria liberata che non viene rilasciata al sistema operativo viene ripristinata nel pool gratuito ed è nuovamente disponibile per l'allocazione.

Una chiamata a _freea deve accompagnare tutte le chiamate a _malloca. È anche un errore chiamare _freea due volte sulla stessa memoria. Quando l'applicazione è collegata a una versione di debug delle librerie di runtime C, in particolare con _malloc_dbg le funzionalità abilitate definendo _CRTDBG_MAP_ALLOC, è più facile trovare chiamate mancanti o duplicate a _freea. Per altre informazioni sulla gestione dell'heap durante il processo di debug, vedere Heap di debug CRT.

_freea è contrassegnato __declspec(noalias), pertanto si garantisce che la funzione non modifichi le variabili globali. Per ulteriori informazioni, vedere noalias.

Requisiti

Funzione Intestazione obbligatoria
_freea <stdlib.h> e <malloc.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

Vedere l'esempio per _malloca.

Vedi anche

Allocazione di memoria
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin