Konseptet av dynamisk minnetildeling i c-språk gjør det mulig for C-programmereren å tildele minne under kjøring . Dynamisk minneallokering i c-språk er mulig med 4 funksjoner i stdlib.h header-fil.
- malloc()
- calloc()
- realloc()
- gratis()
Før vi lærer funksjonene ovenfor, la oss forstå forskjellen mellom statisk minneallokering og dynamisk minneallokering.
statisk minnetildeling | dynamisk minnetildeling |
---|---|
minne tildeles på kompileringstidspunktet. | minne tildeles under kjøring. |
minne kan ikke økes mens programmet kjøres. | minnet kan økes mens programmet kjøres. |
brukt i array. | brukt i lenket liste. |
La oss nå ta en rask titt på metodene som brukes for dynamisk minneallokering.
malloc() | tildeler enkelt blokk med forespurt minne. |
calloc() | tildeler flere blokker med forespurt minne. |
realloc() | omallokerer minnet som er okkupert av malloc()- eller calloc()-funksjoner. |
gratis() | frigjør det dynamisk tildelte minnet. |
malloc()-funksjonen i C
Malloc()-funksjonen tildeler en enkelt blokk med forespurt minne.
... i java
Den initialiserer ikke minne ved utførelsestidspunktet, så den har søppelverdi i utgangspunktet.
arraylist.sort
Den returnerer NULL hvis minnet ikke er tilstrekkelig.
Syntaksen til malloc()-funksjonen er gitt nedenfor:
ptr=(cast-type*)malloc(byte-size)
La oss se eksempelet på malloc()-funksjonen.
#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() funksjon i C
Calloc()-funksjonen tildeler flere blokker av forespurt minne.
Den initialiserer i utgangspunktet alle byte til null.
hvordan bestemme skjermstørrelsen
Den returnerer NULL hvis minnet ikke er tilstrekkelig.
Syntaksen til calloc()-funksjonen er gitt nedenfor:
ptr=(cast-type*)calloc(number, byte-size)
La oss se eksempelet på calloc()-funksjonen.
mylivecricket.
#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()-funksjonen i C
Hvis minnet ikke er tilstrekkelig for malloc() eller calloc(), kan du omfordele minnet ved hjelp av realloc()-funksjonen. Kort sagt, det endrer minnestørrelsen.
La oss se syntaksen til realloc()-funksjonen.
ptr=realloc(ptr, new-size)
free() funksjon i C
Minnet som er okkupert av malloc()- eller calloc()-funksjoner må frigjøres ved å kalle free()-funksjonen. Ellers vil den bruke minne til programmet avsluttes.
La oss se syntaksen til free()-funksjonen.
free(ptr)