Diferença entre calloc e malloc

Diferença de chave - calloc vs malloc

Na programação, é necessário armazenar dados. Os dados são armazenados na memória. Esses locais de memória são conhecidos como variáveis. Cada variável tem um tipo específico. Eles podem ser números inteiros, flutuantes, duplos, caracteres etc. Também existem estruturas de dados que podem armazenar uma coleção seqüencial de tamanho fixo de elementos do mesmo tipo. É uma matriz. O programador deve declarar o tamanho da matriz. Se o programador declara uma matriz de números inteiros para cinco elementos, não é possível atribuir um valor a um índice maior que o tamanho declarado. A alocação de memória é fixa e não pode ser alterada em tempo de execução. Outro método de alocação de memória é a alocação dinâmica de memória. A alocação dinâmica de memória ajuda a alocar mais memória quando necessário e liberar quando necessário. O arquivo de cabeçalho possui quatro funções para alocação dinâmica de memória. calloc e malloc são duas dessas funções. o diferença chave entre calloc e malloc é que calloc aloca a memória e também inicializa os blocos de memória alocados a zero, enquanto malloc aloca a memória, mas não inicializa essa memória alocada a zero. Acessar o conteúdo no calloc fornecerá zero, mas o malloc fornecerá um valor de lixo.

CONTEÚDO

1. Visão geral e principais diferenças
2. O que é calloc
3. O que é malloc
4. Semelhanças entre calloc e malloc
5. Comparação lado a lado - calloc vs malloc em forma de tabela
6. Resumo

O que é calloc?

Alocação de memória é o processo de atribuir memória aos programas em execução. Às vezes é necessário alterar o tamanho da memória. Portanto, a alocação dinâmica de memória é usada. Isso é feito usando ponteiros. Ponteiros são variáveis ​​de referência que mantêm o endereço de outra variável.

Figura 01: calloc e malloc

calloc significa "alocação contígua". Aloca vários blocos de memória com o mesmo tamanho. A sintaxe para calloc é a seguinte. São necessários dois argumentos. Eles são o número de blocos e o tamanho de cada bloco. A função calloc retorna um ponteiro nulo, portanto, um operador de conversão é usado para retornar o tipo de ponteiro de acordo com o tipo de dados necessário.

        void * calloc (tamanho_t num, size_t tamanho);

Consulte o programa C simples abaixo.

#incluir

#incluir

int main ()

int ptr * = (int *) calloc (20, tamanho de (int));

if (ptr == NULL)

printf (“A memória não está alocada”);

outro

printf ("A memória está alocada");

retornar 0;

De acordo com o programa acima, um bloco contíguo de memória que pode conter 20 elementos é alocado. Cada um terá o tamanho de um número inteiro. O sizeof (int) é usado porque o tipo inteiro varia de compilador para compilador.

Se a alocação de memória for bem-sucedida, ele retornará o endereço base do bloco de memória. Isso significa que o ponteiro ptr agora está apontando para o endereço base desse bloco de memória. Todas as regiões alocadas são inicializadas em zeros. Irá imprimir a mensagem Memória alocada. Se a alocação de memória não for bem-sucedida, ele retornará o ponteiro nulo. Portanto, imprimirá a mensagem Memória não alocada.

O que é malloc?

A função malloc é usada para alocar a quantidade necessária de bytes na memória. A sintaxe para malloc é a seguinte. O tamanho representa a memória necessária em bytes.

        void * malloc (tamanho_t_size);

A função malloc retorna um ponteiro nulo, portanto, um operador de conversão é usado para retornar o tipo de ponteiro de acordo com o tipo de dados necessário.

Consulte o programa C simples abaixo com a função malloc.

#incluir

#incluir

int main ()

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

if (ptr == NULL)

printf (“A memória não está alocada”);

outro

printf ("A memória está alocada");

retornar 0;

De acordo com o programa acima, o bloco de memória será alocado. O ponteiro está apontando para o endereço inicial da memória alocada. O ponteiro retornado é convertido em um tipo inteiro. Se houver memória alocada, a mensagem será impressa. Se a memória não estiver alocada, um ponteiro nulo retornará. Portanto, a mensagem de memória não alocada será impressa.

Quais são as semelhanças entre calloc e malloc?

  • Ambas as funções são declaradas no arquivo de cabeçalho. É o arquivo de cabeçalho da biblioteca padrão.
  • Ambas as funções são usadas para alocação dinâmica de memória.
  • O ponteiro retornado por calloc e malloc deve ser convertido no tipo específico.
  • Na alocação de memória bem-sucedida, ambas as funções retornarão um ponteiro com o endereço base do bloco de memória.
  • Se a alocação de memória não for bem-sucedida, um ponteiro nulo será retornado.

Qual é a diferença entre calloc e malloc?

calloc vs malloc

calloc é uma função para alocação dinâmica de memória no arquivo de cabeçalho stdlib.h da linguagem C que aloca um número específico de bytes e os inicializa em zero. malloc é uma função para alocação dinâmica de memória no arquivo de cabeçalho stdlib.h da linguagem C que aloca um número específico de bytes.
 Significado
calloc significa alocação contígua. malloc significa alocação de memória.
Sintaxe
calloc segue uma sintaxe semelhante ao void * calloc (size_t_num, size_t size); malloc segue uma sintaxe semelhante ao void * malloc (size_t_size);.
 Número de argumentos
calloc leva dois argumentos. São vários blocos e tamanho de cada bloco. malloc leva um argumento. É um número de bytes.
Rapidez
O calloc leva pouco mais que o malloc. Isso ocorre devido à etapa extra de inicializar a memória alocada por zero. malloc é mais rápido que calloc.

Resumo - calloc vs malloc

Na alocação de memória estática, como nos arrays, a memória é fixa. Se poucos elementos forem armazenados, o restante da memória será desperdiçado. Também pode causar erros quando a memória alocada é pequena que a memória necessária. Portanto, a alocação dinâmica de memória é usada. Na linguagem C, calloc e malloc fornecem alocação dinâmica de memória. A diferença entre calloc e malloc é que o calloc aloca memória e também inicializa os blocos de memória alocados para zero, enquanto o malloc aloca a memória, mas não inicializa os blocos de memória para zero. Malloc leva dois argumentos enquanto calloc leva dois argumentos.

Faça o download do PDF de calloc vs malloc

Você pode fazer o download da versão em PDF deste artigo e usá-la para fins offline, conforme nota de citação. Faça o download da versão em PDF aqui: Diferença entre calloc e malloc

Referência:

1.Kumar, Krishan. "Diferença entre Malloc e Calloc em C." Cs-Fundamentals.com, Cs-Fundamentals.com. Disponivel aqui  
2. "Alocação dinâmica de memória C". Wikipedia, Wikimedia Foundation, 13 de janeiro de 2018. Disponível aqui 
3. “Calloc () versus malloc ().” GeeksforGeeks, 14 de junho de 2017. Disponível aqui