Alocação Dinâmica de Memória em Programação C

CBeginner
Pratique Agora

Introdução

Na programação em C, nem sempre sabemos o tamanho inicial de um array (vetor) com antecedência. Nesses casos, usamos a alocação dinâmica de memória — um método de alocar memória somente quando necessário. malloc() é uma função usada na programação em C para alocar uma quantidade específica de memória necessária para um array ou uma variável que será usada em tempo de execução. Neste laboratório, aprenderemos como alocar memória dinamicamente usando malloc() e, em seguida, liberar o espaço de memória usando free().

Nota: Você precisa criar o arquivo ~/project/main.c por conta própria para praticar a codificação e aprender como compilar e executá-lo usando o gcc.

cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main

Incluir os arquivos de cabeçalho necessários

Nesta etapa, incluiremos os arquivos de cabeçalho necessários em nosso programa.

#include <stdio.h>
#include <stdlib.h>

Definir a função main()

Nesta etapa, definiremos a função main(). Nesta função, declararemos as variáveis necessárias para o programa.

int main()
{
    int n, i, *ptr, sum = 0;

    printf("\nEnter number of elements: ");
    scanf("%d", &n);

Alocar memória dinamicamente usando malloc()

Nesta etapa, alocaremos memória dinamicamente usando malloc(). O tamanho da memória a ser alocada é determinado pelo produto do número de elementos e o tamanho de cada elemento usando o operador sizeof().

ptr = (int *) malloc(n * sizeof(int));

if(ptr == NULL)
{
    printf("\nError! Memory not allocated.");
    exit(0);
}

Armazenar valores na memória alocada

Nesta etapa, armazenaremos valores na memória alocada usando um loop.

for(i = 0; i < n; i++)
{
    printf("\nEnter element %d: ", i + 1);
    scanf("%d", ptr + i);
    sum += *(ptr + i);
}

Imprimir os valores

Nesta etapa, imprimiremos os valores que foram armazenados.

printf("\nElements entered are: ");
for(i = 0; i < n; i++)
{
    printf("%d ", *(ptr + i));
}

Liberar a memória

Nesta etapa, liberaremos a memória alocada usando free().

free(ptr);

Resumo

Neste laboratório, aprendemos como alocar memória dinamicamente usando malloc() e liberar o espaço de memória usando free(). Aprendemos como declarar variáveis na função main() e alocar memória usando malloc(). Também aprendemos como armazenar dados no espaço de memória alocado, imprimir os valores armazenados e, em seguida, liberar a memória alocada usando free().