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; }