free
Desaloca ou libera um bloco de memória.
Sintaxe
void free(
void *memblock
);
Parâmetros
memblock
Bloqueio de memória anteriormente alocado a ser liberado.
Comentários
A função free
desaloca um bloco de memória (memblock
) que foi alocado anteriormente por uma chamada a calloc
, malloc
ou realloc
. O número de bytes liberados é equivalente ao número de bytes solicitados quando o bloco foi alocado (ou realocado, para realloc
). Se memblock
for NULL
, o ponteiro será ignorado e free
retornará imediatamente. Tentar liberar um ponteiro inválido (um ponteiro para um bloco de memória que não foi alocado por calloc
, malloc
nem realloc
) pode afetar solicitações posteriores de alocação e causar erros.
Se ocorrer um erro ao liberar a memória, o errno
é definido com informações do sistema operacional sobre a natureza da falha. Para obter mais informações, consulte errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Após um bloco de memória ter sido liberado, _heapmin
minimiza a quantidade de memória livre no heap juntando as regiões não utilizadas e liberando-as para o sistema operacional. A memória liberada que não for liberada para o sistema operacional será restaurada no pool livre e ficará disponível para alocação novamente.
Quando o aplicativo estiver vinculado a uma versão de depuração das bibliotecas de runtime do C, free
será resolvido como _free_dbg
. Para obter mais informações sobre como o heap é gerenciado durante o processo de depuração, consulte O heap de depuração do CRT.
free
é marcado como __declspec(noalias)
, o significa que há uma garantia de que a função não modifica variáveis globais. Para obter mais informações, consulte noalias
.
Para liberar a memória alocada com _malloca
, use _freea
.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Requisitos
Função | Cabeçalho necessário |
---|---|
free |
<stdlib.h> e <malloc.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
Confira o exemplo de malloc
.
Confira também
Alocação de memória
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea