logo

Calloc i C

Dette emne vil diskutere, hvordan man opretter dynamisk hukommelsesallokering ved hjælp af funktionen calloc() i programmeringssproget C. Inden vi gennemgår begreberne, lad os diskutere den dynamiske hukommelsesallokering i C. Dynamisk hukommelse er en strukturprogrammeringsprocedure, der giver brugerne mulighed for at allokere hukommelsen på et programs køretid. Ved hjælp af dynamisk hukommelsesallokering kan vi øge eller mindske hukommelsen under udførelsen af ​​et program. På denne måde undgår det spild af computerhukommelse. En hukommelsesallokering er opdelt i to dele er malloc() og calloc() funktion.

Calloc i C

EN calloc() funktion er en foruddefineret biblioteksfunktion, der står for sammenhængende hukommelsestildeling . En calloc()-funktion bruges til at oprette flere blokke ved kørselstidspunktet for et program med samme størrelse i hukommelsen. En calloc-funktion er defineret inde i stdlib.h header-fil. Den har to parametre, nej. af blokke og størrelsen af ​​hver blok. Når den dynamiske hukommelse er allokeret ved hjælp af calloc()-funktionen, returnerer den basisadressen for den første blok, og hver blok initialiseres med 0. Og hvis hukommelsen ikke oprettes, returnerer den en NULL-pointer.

Antag for eksempel, at vi vil oprette tre hukommelsesblokke ved hjælp af calloc()-funktionen, skal vi sende to parametre, et antal blokke (3) og størrelsen af ​​hver blok (int, char, float osv.) i byten. På denne måde skaber den tre blokke, hvis størrelse er den samme inde i computerens hukommelse.

Syntaks

 ptr = (cast_type *) calloc ( number_of_blocks, size_of_block); 

I ovenstående syntaks har calloc()-funktionen to parametre. Den første parameter definerer antal blokke og den anden parameter definerer størrelsen af ​​hver blok i hukommelsen. Størrelsen på blokkene og cast_type kan være i int, char, float osv.

Vend tilbage : Den returnerer basisadressen for den første blok til ptr-variablen.

Program til at kontrollere dynamisk hukommelse er allokeret ved hjælp af calloc()-funktionen

Lad os skrive et simpelt program for at kontrollere, om den dynamiske hukommelse er allokeret i 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; } 

Produktion:

 Memory is created successfully 

Program til at demonstrere brugen af ​​calloc()-funktionen

Lad os overveje at skabe dynamisk hukommelsesallokering ved hjælp af calloc()-funktionen og gemme data i hukommelsesblokkene.

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

Program til at frigive dynamisk hukommelsesallokering ved hjælp af free() funktion

free() funktion: En free() funktion bruges til at frigive den dynamiske hukommelse, som enten oprettes calloc () eller malloc () funktion. Disse tildelte minder kan ikke frigøres til deres egne, og de vil eksistere indtil programmets afslutning. Så det er vores ansvar at frigive den hukommelse, der kan genbruges, og derfor bruger vi eksplicit funktionen free() til at frigive hukommelsen.

Syntaks

 free (ptr); 

Her er free() en funktion, der frigiver den allokerede hukommelse ved hjælp af pointer ptr-variablen.

xampp alternativ

Lad os overveje at oprette dynamisk hukommelsesallokering ved hjælp af calloc()-funktionen og derefter frigive optaget plads ved hjælp af free()-funktionen i C-programmet.

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