Condividi tramite


_freea

Rilascia o libera un blocco di memoria.

void _freea( 
   void *memblock 
);

Parametri

  • memblock
    Blocco di memoria precedentemente allocata da liberare.

Valore restituito

Nessuno.

Note

La funzione _freea 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 sullo stack, _freea non esegue alcuna operazione. Se è stata allocata nell'heap, il numero di byte liberati equivale al numero di byte richiesto quando il blocco è stato allocato. Se memblock è NULL, il puntatore viene ignorato e _freea terminerà immediatamente. Il tentativo di liberare un puntatore non valido (un puntatore a un blocco di memoria che non è stato allocato da _malloca) potrebbe influire sulle richieste di allocazione successive e provocare errori.

_freea chiama internamente free se rileva che è allocata la memoria nell'heap. Se la memoria è nell'heap o nello stack è determinato da un marcatore inserito nella memoria all'indirizzo immediatamente precedente alla memoria allocata.

Se si verifica un errore nella liberazione della memoria, errno viene fornito con informazioni dal sistema operativo sulla natura dell'errore. Per ulteriori informazioni, vedere errno, _doserrno, _sys_errlist, and _sys_nerr.

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

Una chiamata a _freea deve associare a tutte le chiamate a _malloca. È anche un errore chiamare due volte _freea sulla stessa memoria. Quando l'applicazione viene collegata a una versione di debug delle librerie di runtime del linguaggio C, in particolare con le funzionalità di _malloc_dbg definendo _CRTDBG_MAP_ALLOC, è più facile trovare le chiamate mancanti o duplicate a _freea. Per ulteriori informazioni su come viene gestito l'heap durante il processo di debug, vedere L'heap di debug CRT.

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

Requisiti

Funzione

Intestazione obbligatoria

_freea

<stdlib.h> e <malloc.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Esempio

Vedere l'esempio per _malloca.

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Allocazione di memoria

_malloca

calloc

malloc

_malloc_dbg

realloc

_free_dbg

_heapmin