logo

Calloc em C

Este tópico discutirá como criar alocação dinâmica de memória usando a função calloc() na linguagem de programação C. Antes de passar pelos conceitos, vamos discutir a alocação dinâmica de memória em C. Memória dinâmica é um procedimento de programação de estrutura que permite aos usuários alocar memória no tempo de execução de um programa. Usando a alocação dinâmica de memória, podemos aumentar ou diminuir a memória durante a execução de um programa. Desta forma, evita o desperdício de memória do computador. Uma alocação de memória é dividida em duas partes: função malloc() e calloc().

Calloc em C

A função calloc() é uma função de biblioteca predefinida que significa alocação de memória contígua . Uma função calloc() é usada para criar vários blocos no tempo de execução de um programa com o mesmo tamanho na memória. Uma função calloc é definida dentro do stdlib.h arquivo de cabeçalho. Tem dois parâmetros, não. de blocos e o tamanho de cada bloco. Quando a memória dinâmica é alocada usando a função calloc(), ela retorna o endereço base do primeiro bloco, e cada bloco é inicializado com 0. E se a memória não for criada, ele retorna um ponteiro NULL.

Por exemplo, suponha que queiramos criar três blocos de memória usando a função calloc(), precisamos passar dois parâmetros, um número de blocos (3) e o tamanho de cada bloco (int, char, float, etc.) em o byte. Desta forma, cria três blocos de tamanho igual dentro da memória do computador.

Sintaxe

python gera uuid
 ptr = (cast_type *) calloc ( number_of_blocks, size_of_block); 

Na sintaxe acima, a função calloc() possui dois parâmetros. O primeiro parâmetro define o número de blocos e o segundo parâmetro define o tamanho de cada bloco em memória. O tamanho dos blocos e cast_type pode ser int, char, float, etc.

Retornar : Retorna o endereço base do primeiro bloco para a variável ptr.

Programa para verificar se a memória dinâmica está alocada usando a função calloc()

Vamos escrever um programa simples para verificar se a memória dinâmica está alocada em C.

programa.c

 #include #include int main() { int *ptr; /* use calloc() function to define the no. of blocks and size of each blocks. */ ptr = calloc (4, sizeof(int)); // here 4 is the no. of block and int is the size of block if (ptr != NULL) { printf (' Memory is created successfully 
'); } else printf (' Memory is not created '); return 0; } 

Saída:

 Memory is created successfully 

Programa para demonstrar o uso da função calloc()

Vamos considerar a criação de alocação dinâmica de memória usando a função calloc() e o armazenamento de dados nos blocos de memória.

Programa2.c

 #include #include #include void main() { int n, *ptr, *p, i, sum = 0; /* n = number of elements, *ptr = store base address of the dynamic memory, *p store temporary address of the *ptr */ printf (' Enter the number of elements: '); scanf (' %d', &n); // it takes number of elements // use calloc syntax to create memory block of int data type ptr = (int *) calloc (n, sizeof(int)); p = ptr; // assign the address of ptr if (ptr == NULL) // it checks whether the memory is allocated { printf (' Memory is not allocated. '); exit(0); // exit from the program } printf (' Enter %d numbers 
&apos;, n); for ( i = 1; i <= n; i++) { scanf ( '%d', ptr); sum="sum" + *ptr; ptr++; } printf (' elements are: '); for (i="1;" i <="n;" %d', *p); p++; 
 the addition of is: %d ', sum); getch(); pre> <p> <strong>Output:</strong> </p> <pre> Enter the number of elements: 5 Enter 5 numbers 1 2 3 4 5 Elements are: 1 2 3 4 5 The addition of the elements is: 15 </pre> <h3>Program to release dynamic memory allocation using free() function</h3> <p> <strong>free() function:</strong> A free() function is used to release the dynamic memory which is created either <strong>calloc</strong> () or <strong>malloc</strong> () function. These allocated memories cannot be freed to their own, and they will exist till the end of the program. So, it is our responsibility to release that memory that can be reused, and hence we explicitly use the free() function to release the memory.</p> <p> <strong>Syntax</strong> </p> <pre> free (ptr); </pre> <p>Here free() is a function that releases the allocated memory using the pointer ptr variable.</p> <p>Let&apos;s consider creating dynamic memory allocation using the calloc() function and then releasing occupied space using the free() function in the C program.</p> <p> <strong>Release.c</strong> </p> <pre> #include #include #include void main() { int n, *ptr, *p, i, sum = 0; printf (&apos; Define the number of elements to be entered: &apos;); scanf (&apos; %d&apos;, &amp;n); // use calloc syntax to create memory block of int data type ptr = (int *) calloc (n, sizeof(int)); p = ptr; // store the base address in p if (ptr == NULL) { printf (&apos; Out of memory &apos;); exit(0); } printf (&apos; Enter the elements 
&apos;, n); for ( i = 1; i <= n; i++) { scanf ( '%d', ptr); sum="sum" + *ptr; ptr++; } printf (' elements are: '); for (i="1;" i <="n;" %d', *p); p++; 
 the addition of is: %d ', sum); free(ptr); * use free() function to release dynamic memory allocation getch(); pre> <p> <strong>Output:</strong> </p> <pre> Define the number of elements to be entered: 6 Enter the elements 2 4 6 8 10 12 Elements are: 2 4 6 8 10 12 The addition of the elements is: 42 </pre> <hr></=></pre></=>

Programa para liberar alocação dinâmica de memória usando a função free()

função grátis(): Uma função free() é usada para liberar a memória dinâmica que é criada calloc () ou maloc () função. Essas memórias alocadas não podem ser liberadas sozinhas e existirão até o final do programa. Portanto, é nossa responsabilidade liberar a memória que pode ser reutilizada e, portanto, usamos explicitamente a função free() para liberar a memória.

finalizar a compra no git

Sintaxe

 free (ptr); 

Aqui free() é uma função que libera a memória alocada usando a variável ponteiro ptr.

Vamos considerar a criação de alocação dinâmica de memória usando a função calloc() e então liberando o espaço ocupado usando a função free() no programa C.

Lançamento.c

 #include #include #include void main() { int n, *ptr, *p, i, sum = 0; printf (&apos; Define the number of elements to be entered: &apos;); scanf (&apos; %d&apos;, &amp;n); // use calloc syntax to create memory block of int data type ptr = (int *) calloc (n, sizeof(int)); p = ptr; // store the base address in p if (ptr == NULL) { printf (&apos; Out of memory &apos;); exit(0); } printf (&apos; Enter the elements 
&apos;, n); for ( i = 1; i <= n; i++) { scanf ( \'%d\', ptr); sum="sum" + *ptr; ptr++; } printf (\' elements are: \'); for (i="1;" i <="n;" %d\', *p); p++; 
 the addition of is: %d \', sum); free(ptr); * use free() function to release dynamic memory allocation getch(); pre> <p> <strong>Output:</strong> </p> <pre> Define the number of elements to be entered: 6 Enter the elements 2 4 6 8 10 12 Elements are: 2 4 6 8 10 12 The addition of the elements is: 42 </pre> <hr></=>