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