logo

Calloc în C

Acest subiect va discuta cum să creați o alocare dinamică de memorie folosind funcția calloc() în limbajul de programare C. Înainte de a trece prin concepte, să discutăm despre alocarea memoriei dinamice în C. Memoria dinamică este o procedură de programare a structurii care permite utilizatorilor să aloce memoria în timpul rulării unui program. Folosind alocarea dinamică a memoriei, putem crește sau micșora memoria în timpul execuției unui program. În acest fel, se evită irosirea memoriei computerului. O alocare de memorie este împărțită în două părți: funcția malloc() și calloc().

Calloc în C

A funcția calloc(). este o funcție de bibliotecă predefinită care reprezintă alocarea memoriei contigue . O funcție calloc() este utilizată pentru a crea mai multe blocuri în timpul rulării unui program având aceeași dimensiune în memorie. O funcție calloc este definită în interiorul stdlib.h fișier antet. Are doi parametri, nu. de blocuri și dimensiunea fiecărui bloc. Când memoria dinamică este alocată folosind funcția calloc(), returnează adresa de bază a primului bloc, iar fiecare bloc este inițializat cu 0. Și dacă memoria nu este creată, returnează un pointer NULL.

De exemplu, să presupunem că vrem să creăm trei blocuri de memorie folosind funcția calloc(), trebuie să trecem doi parametri, un număr de blocuri (3) și dimensiunea fiecărui bloc (int, char, float etc.) în octetul. În acest fel, creează trei blocuri a căror dimensiune este aceeași în interiorul memoriei computerului.

Sintaxă

converti șirul în char java
 ptr = (cast_type *) calloc ( number_of_blocks, size_of_block); 

În sintaxa de mai sus, funcția calloc() are doi parametri. Primul parametru definește numărul de blocuri iar al doilea parametru definește dimensiunea fiecărui bloc in memoria. Dimensiunea blocurilor și cast_type poate fi în int, char, float etc.

Întoarcere : returnează adresa de bază a primului bloc variabilei ptr.

cum se deschide aplicațiile ascunse pe Android

Programul de verificare a memoriei dinamice este alocat folosind funcția calloc().

Să scriem un program simplu pentru a verifica dacă memoria dinamică este alocată în C.

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

Ieșire:

 Memory is created successfully 

Program pentru a demonstra utilizarea funcției calloc().

Să luăm în considerare crearea unei alocări dinamice de memorie folosind funcția calloc() și stocarea datelor în blocurile de memorie.

Programul2.c

afișați aplicațiile ascunse
 #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></=>

Program pentru a elibera alocarea dinamică a memoriei folosind funcția free().

funcția free(): O funcție free() este folosită pentru a elibera memoria dinamică care este creată fie calloc () sau malloc () funcția. Aceste amintiri alocate nu pot fi eliberate în propriile lor memorii și vor exista până la sfârșitul programului. Deci, este responsabilitatea noastră să eliberăm acea memorie care poate fi reutilizată și, prin urmare, folosim în mod explicit funcția free() pentru a elibera memoria.

Sintaxă

 free (ptr); 

Aici free() este o funcție care eliberează memoria alocată folosind variabila pointer ptr.

char tostring java

Să luăm în considerare crearea unei alocări dinamice de memorie folosind funcția calloc() și apoi eliberarea spațiului ocupat folosind funcția free() din programul C.

Eliberare.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></=>