Diferentemente das outras variáveis, é responsabilidade do programador liberar toda memória alocada dinamicamente. Nesta aula veremos como liberar memória alocada dinamicamente com a função free().
Quando alocamos memória dinamicamente, esta região de memória ficará marcada como ocupada até ela seja liberada ou até que o programa seja encerrado. Por isso é tão importante liberar toda memória que não é mais necessária. Caso a memória não seja liberada e o programa permaneça em execução por horas, a memória alocada permanecerá marcada como ocupada, mesmo que não esteja sendo utilizada mais, sendo liberada apenas quando o programa for encerrado.
Liberar memória na linguagem de programação C é muito simples. Basta utilizarmos a função free. Esta função recebe como parâmetro o ponteiro para a região de memória que será liberada, assim:
// exemplo de uso da função free
// pt é o ponteiro para a região de memória a ser liberada
free(pt);
Código de exemplo completo em C com a função free
/*
Aula 201: Como liberar memória alocada dinamicamente com a função free
Código escrito por Wagner Gaspar
Junho de 2021
*/
#include <stdio.h>
#include <stdlib.h>
int main(){
int i, tam, *vet;
printf("Digite o tamanho do vetor: ");
scanf("%d", &tam);
srand(time(NULL));
// aloca memória
vet = malloc(tam * sizeof(int));
if(vet){
printf("Memoria alocada com sucesso!\n");
for(i = 0; i < tam; i++)
*(vet + i) = rand() % 100;
for(i = 0; i < tam; i++)
printf("%d ", *(vet + i));
printf("\n");
// libera a memória alocada
free(vet);
}
else{
printf("Erro ao alocar memoria!\n");
}
return 0;
}
