logo

Dinamična dodelitev pomnilnika v C

Koncept dinamično dodeljevanje pomnilnika v jeziku c programerju C omogoča dodelitev pomnilnika med izvajanjem . Dinamično dodeljevanje pomnilnika v jeziku c je možno s 4 funkcijami datoteke glave stdlib.h.

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

Preden se naučimo zgornjih funkcij, poglejmo razliko med statično dodelitvijo pomnilnika in dinamično dodelitvijo pomnilnika.

dodeljevanje statičnega pomnilnikadinamično dodeljevanje pomnilnika
pomnilnik se dodeli med prevajanjem.pomnilnik se dodeli med izvajanjem.
pomnilnika med izvajanjem programa ni mogoče povečati.pomnilnik je mogoče povečati med izvajanjem programa.
uporabljen v nizu.uporabljen na povezanem seznamu.

Zdaj pa si na hitro poglejmo metode, ki se uporabljajo za dinamično dodeljevanje pomnilnika.

malloc() dodeli en blok zahtevanega pomnilnika.
calloc() dodeli več blokov zahtevanega pomnilnika.
realloc() ponovno dodeli pomnilnik, ki ga zasedata funkciji malloc() ali calloc().
prost() sprosti dinamično dodeljeni pomnilnik.

funkcija malloc() v C

Funkcija malloc() dodeli en blok zahtevanega pomnilnika.

nadzorne strukture python

V času izvajanja ne inicializira pomnilnika, zato ima na začetku vrednost smeti.

Če pomnilnik ni dovolj, vrne NULL.

Sintaksa funkcije malloc() je podana spodaj:

 ptr=(cast-type*)malloc(byte-size) 

Oglejmo si primer funkcije malloc().

 #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)>

funkcija calloc() v C

Funkcija calloc() dodeli več blokov zahtevanega pomnilnika.

javascript za zanko

Na začetku vse bajte inicializira na nič.

Če pomnilnik ni dovolj, vrne NULL.

Sintaksa funkcije calloc() je podana spodaj:

 ptr=(cast-type*)calloc(number, byte-size) 

Oglejmo si primer funkcije calloc().

 #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)>

funkcija realloc() v C

Če pomnilnika ni dovolj za malloc() ali calloc(), lahko pomnilnik znova dodelite s funkcijo realloc(). Skratka, spremeni velikost pomnilnika.

Oglejmo si sintakso funkcije realloc().

 ptr=realloc(ptr, new-size) 

funkcija free() v C

Pomnilnik, ki ga zasedata funkciji malloc() ali calloc(), je treba sprostiti s klicem funkcije free(). V nasprotnem primeru bo porabil pomnilnik do izhoda iz programa.

Oglejmo si sintakso funkcije free().

 free(ptr)