aula 201

Como liberar memória alocada dinamicamente com a função free?

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

Deixe um comentário

3 + um =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.