aula 207

Qual a diferença entre as funções malloc e calloc?

Talvez você esteja se perguntando porque uma linguagem de programação possui duas funções para alocação dinâmica de memória? Bem, na aula de hoje vamos ver qual a diferença entre as funções de alocação dinâmica malloc e calloc!

A função malloc ela apenas aloca, separa, a quantidade de memória solicitada e retorna o ponteiro para o início daquela região de memória.

E se tiver lixo de memória?

Se existir lixo de memória em qualquer das posições de memória alocadas, esse lixo permanece lá. Você, enquanto programador, precisa fazer uma repetição e limpar todas as posições.

A função calloc, por outro lado, além de separar a quantidade de memória solicitada, ela já inicializa todas as posições com zero, o que pode ser muito útil em algumas situações.

Código completo de exemplo em C

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

/*
            Aula 207: Curiosidade sobre as funções malloc e calloc

            Código escrito por Wagner Gaspar
            Junho de 2021

            OBSERVAÇÃO:
            Este é apenas um código de exemplo e ambos os vetores podem estar com o valor zero em todas as posições de memória se forem vetores pequenos e não possuir lixo de memória.
*/

int main() {

    int i, *vet1, *vet2;

    vet1 = malloc(10 * sizeof(int));
    vet2 = calloc(10, sizeof(int));

    printf("\nCom malloc: ");
    for(i = 0; i < 10; i++)
        printf("%d ", vet1[i]);

    printf("\nCom calloc: ");
    for(i = 0; i < 10; i++)
        printf("%d ", vet2[i]);

    return 0;
}

Deixe um comentário

cinco × cinco =

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.