_freea
Desaloca ou libera um bloco de memória.
Sintaxe
void _freea(
void *memblock
);
Parâmetros
memblock
Bloqueio de memória anteriormente alocado a ser liberado.
Valor retornado
Nenhum.
Comentários
A _freea
função desaloca um bloco de memória (memblock
) que foi alocado anteriormente por uma chamada para _malloca
. _freea
verifica se a memória foi alocada no heap ou na pilha. Se ela tiver sido alocada na pilha, _freea
não fará nada. Se tiver sido alocada no heap, o número de bytes liberados será equivalente ao número de bytes solicitados quando o bloco foi alocado. Se memblock
for NULL
, o ponteiro será ignorado e _freea
retornará imediatamente. A tentativa de liberar um ponteiro inválido (um ponteiro para um bloco de memória que não foi alocado por _malloca
) pode afetar as solicitações de alocação subsequentes e causar erros.
_freea
chamadas free
internamente se descobrir que a memória está alocada no heap. Um marcador colocado na memória, no endereço imediatamente anterior à memória alocada, determina se a memória está no heap ou na pilha.
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.
Uma chamada para _freea
deve acompanhar todas as chamadas para _malloca
. Também é um erro chamar _freea
duas vezes na mesma memória. Quando o aplicativo está vinculado a uma versão de depuração das bibliotecas de tempo de execução C, especialmente com _malloc_dbg
recursos habilitados pela definição _CRTDBG_MAP_ALLOC
do , é mais fácil encontrar chamadas ausentes ou duplicadas para _freea
o . Para obter mais informações sobre como o heap é gerenciado durante o processo de depuração, consulte O heap de depuração do CRT.
_freea
é 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
.
Requisitos
Função | Cabeçalho necessário |
---|---|
_freea |
<stdlib.h> e <malloc.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
Confira o exemplo de _malloca
.
Confira também
Alocação de memória
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin