Konceptet av dynamisk minnesallokering i c-språk gör det möjligt för C-programmeraren att allokera minne vid körning . Dynamisk minnesallokering i c-språk är möjlig med 4 funktioner i stdlib.h-huvudfilen.
- malloc()
- calloc()
- realloc()
- fri()
Innan vi lär oss ovanstående funktioner, låt oss förstå skillnaden mellan statisk minnesallokering och dynamisk minnesallokering.
statisk minnesallokering | dynamisk minnesallokering |
---|---|
minne tilldelas vid kompilering. | minne tilldelas vid körning. |
minnet kan inte utökas medan programmet körs. | minnet kan utökas medan programmet körs. |
används i array. | används i länkad lista. |
Låt oss nu ta en snabb titt på metoderna som används för dynamisk minnesallokering.
malloc() | allokerar ett enda block av begärt minne. |
calloc() | allokerar flera block av begärt minne. |
realloc() | omfördelar minnet som upptas av malloc()- eller calloc()-funktioner. |
fri() | frigör det dynamiskt allokerade minnet. |
malloc() funktion i C
Funktionen malloc() allokerar ett enda block av begärt minne.
Det initierar inte minnet vid körning, så det har ett skräpvärde initialt.
Den returnerar NULL om minnet inte räcker till.
Syntaxen för malloc()-funktionen ges nedan:
ptr=(cast-type*)malloc(byte-size)
Låt oss se exemplet på malloc()-funktionen.
#include #include int main(){ int n,i,*ptr,sum=0; printf('Enter number of elements: '); scanf('%d',&n); ptr=(int*)malloc(n*sizeof(int)); //memory allocated using malloc if(ptr==NULL) { printf('Sorry! unable to allocate memory'); exit(0); } printf('Enter elements of array: '); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d',sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>calloc() function in C</h2> <p>The calloc() function allocates multiple block of requested memory.</p> <p>It initially initialize all bytes to zero.</p> <p>It returns NULL if memory is not sufficient.</p> <p>The syntax of calloc() function is given below:</p> <pre> ptr=(cast-type*)calloc(number, byte-size) </pre> <p>Let's see the example of calloc() function.</p> <pre> #include #include int main(){ int n,i,*ptr,sum=0; printf('Enter number of elements: '); scanf('%d',&n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf('Sorry! unable to allocate memory'); exit(0); } printf('Enter elements of array: '); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d',sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>realloc() function in C</h2> <p>If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc() function. In short, it changes the memory size.</p> <p>Let's see the syntax of realloc() function.</p> <pre> ptr=realloc(ptr, new-size) </pre> <h2>free() function in C</h2> <p>The memory occupied by malloc() or calloc() functions must be released by calling free() function. Otherwise, it will consume memory until program exit.</p> <p>Let's see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)></pre></n;++i)>
calloc() funktion i C
Calloc()-funktionen allokerar flera block av begärt minne.
Det initialiserar initialt alla bytes till noll.
Den returnerar NULL om minnet inte räcker till.
Syntaxen för calloc()-funktionen ges nedan:
ptr=(cast-type*)calloc(number, byte-size)
Låt oss se exemplet på calloc()-funktionen.
#include #include int main(){ int n,i,*ptr,sum=0; printf('Enter number of elements: '); scanf('%d',&n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf('Sorry! unable to allocate memory'); exit(0); } printf('Enter elements of array: '); for(i=0;i<n;++i) { scanf(\'%d\',ptr+i); sum+="*(ptr+i);" } printf(\'sum="%d',sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>realloc() function in C</h2> <p>If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc() function. In short, it changes the memory size.</p> <p>Let's see the syntax of realloc() function.</p> <pre> ptr=realloc(ptr, new-size) </pre> <h2>free() function in C</h2> <p>The memory occupied by malloc() or calloc() functions must be released by calling free() function. Otherwise, it will consume memory until program exit.</p> <p>Let's see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)>
realloc() funktion i C
Om minnet inte är tillräckligt för malloc() eller calloc(), kan du omfördela minnet med realloc()-funktionen. Kort sagt, det ändrar minnesstorleken.
java avgränsare
Låt oss se syntaxen för realloc()-funktionen.
ptr=realloc(ptr, new-size)
free() funktion i C
Minnet som upptas av malloc()- eller calloc()-funktionerna måste frigöras genom att anropa free()-funktionen. Annars kommer det att förbruka minne tills programmet avslutas.
Låt oss se syntaxen för free()-funktionen.
free(ptr)