Diferença entre malloc e calloc

ambas as funções são funções de alocação dinâmica de memória….

malloc:

  • Ele tem um argumento.
  • retorna ponteiro nulo, com base na necessidade, podemos digitar a conversão do ponteiro.
  • Não ocupa tamanho de memória inteiro, apenas tamanho de ponteiro (retornado pelo malloc)
  • A principal diferença é "não inicializa zero para valorizar"

calloc:

  • Tem dois argumentos.
  • retorna ponteiro nulo, com base na necessidade, podemos digitar a conversão do ponteiro.
  • Não ocupa o tamanho total da memória, apenas o tamanho do ponteiro (retornado pelo calloc)
  • A principal diferença é "inicializar zero para valorizar"

NOTA: Abaixo, o programa diz sobre

  1. Na alocação dinâmica de memória, a memória é alocada na memória heap manualmente.
  2. O principal motivo para entrar na alocação dinâmica de memória é usado para evitar o tamanho desnecessário da memória que foi inicializado no array estático a [20] /
  3. Malloc aloca memória na memória heap como um bloco. Também é o mesmo para calloc
  4. calloc mais rápido >> malloc

Exemplo:

#incluir

#incluir

vazio principal ()

{

int a [20]; // alocação de memória estática

int * p = (int *) malloc (5 * sizeof (int)); // Alocação dinâmica de memória

int * q = (int *) calloc (5, tamanho de (int)); // Alocação dinâmica de memória

printf ("Tamanho da matriz por alocação estática e dinâmica \ n");

printf ("% d \ n% d \ n% d \ n", tamanhoof (a), tamanhoof (p), tamanhoof (q));

printf ("valores padrão na matriz por malloc \ n");

for (int i = 0; i <5; i ++)

{

printf ("% d \ n", * (p + i));

}

printf ("valores padrão na matriz por calloc \ n");

for (int i = 0; i <5; i ++)

{

printf ("% d \ n", * (q + i));

}

}

Resultado:

Tamanho da matriz por alocação de memória estática e dinâmica

80

4

4

valores padrão na matriz por malloc

4073144

4066968

1163089228

1380995922

1279870543

valores padrão na matriz por calloc

0 0

0 0

0 0

0 0

0 0