logo

Dynamisk minnetildeling i C

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.

  1. malloc()
  2. calloc()
  3. realloc()
  4. gratis()

Før vi lærer funksjonene ovenfor, la oss forstå forskjellen mellom statisk minneallokering og dynamisk minneallokering.

statisk minnetildelingdynamisk 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(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)malloc(n*sizeof(int)); //memory allocated using malloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d&apos;,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&apos;s see the example of calloc() function.</p> <pre> #include #include int main(){ int n,i,*ptr,sum=0; printf(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d&apos;,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&apos;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&apos;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(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf(\'%d\',ptr+i); sum+="*(ptr+i);" } printf(\'sum="%d&apos;,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&apos;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&apos;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)