Dando continuidade ao nosso Curso de Programação com a Linguagem C, na aula anterior conhecemos a função malloc para alocação dinâmica de memória. Nesta aula vamos aprender a função CALLOC, também para alocação dinâmica de memória.
A função calloc também serve para alocação dinâmica de memória assim como a função malloc que aprendemos na aula anterior. A diferença é que a função calloc recebe dois parâmetros, a quantidade de elementos que iremos salvar na região de memória alocada e o tamanho em memória de um elemento desse tipo.
Vamos a um exemplo. Para alocar memória para um caracter fazemos assim:
char *x;
x = calloc(1, sizeof(char));
Perceba que o primeiro parâmetro é a quantidade de caracteres que iremos salvar na memória alocada e o segundo parâmetro é quanta memória ocupa por um caracter. A função fará a multiplicação da quantidade de memória vezes a quantidade de elementos.
Se fosse um inteiro seria exatamente igual, trocando apenas o tipo de dado, assim:
int *x;
x = calloc(1, sizeof(int));
Código de exemplo completo em C com a função calloc
/*
Aula 198: Alocação dinâmica de memória com a função calloc.
Código escrito por Wagner Gaspar
Maio de 2021
*/
int main(){
char *x;
//x = malloc(sizeof(int));
x = calloc(1, sizeof(char));
if(x){
printf("Memoria alocada com sucesso!\n");
printf("x: %c\n", *x);
*x = 'H';
printf("x: %c\n", *x);
}
else{
printf("Erro ao alocar memoria!\n");
}
return 0;
}

Faltou falar que ao usar calloc para alocar memória para um inteiro ela preenche o mesmo com 0, fora isso perfeito como sempre