A memória alocada usando as funções malloc e calloc não é desalocada sozinha. Portanto, o método free é usado, sempre que ocorre a alocação dinâmica de memória. Ajuda a reduzir o desperdício de memória, liberando-a.
Como a memória alocada é liberada?
Em C, a função de biblioteca malloc é usada para alocar um bloco de memória no heap. O programa acessa este bloco de memória através de um ponteiro que malloc retorna. Quando a memória não é mais necessária, o ponteiro é passado para free que desaloca a memória para que ela possa ser usada para outros propósitos.
O que acontece se você não liberar memória alocada?
Na maioria dos casos, desalocar memory logo antes da saída do programa é inútil. O sistema operacional irá recuperá-lo de qualquer maneira. Free irá tocar e paginar os objetos mortos; o sistema operacional não. Consequência: tenha cuidado com "detectores de vazamento" que contam alocações.
Alocar memória é caro?
Uma medida ingênua do custo de alocar e liberar grandes blocos de memória concluiria que custa cerca de 7,5 μs para cada par de alocação/livre. No entanto, existem três custos separados por MB para grandes alocações.
Pode realocar liberar o espaço de memória alocado se sim, como?
A função realloc aloca, realoca ou libera o bloco de memória especificado por old_blk com base nas seguintes regras: Se old_blk for NULL, um novo bloco de memória de tamanho bytes éalocado. Se o tamanho for zero, a função free é chamada para liberar a memória apontada por old_blk.