_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_errlist
e _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