logo

Dinaminis atminties paskirstymas C

Sąvoka dinaminis atminties paskirstymas c kalba leidžia C programuotojui skirti atmintį vykdymo metu . Dinaminis atminties paskirstymas c kalba galimas naudojant 4 stdlib.h antraštės failo funkcijas.

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

Prieš mokydamiesi aukščiau pateiktų funkcijų, supraskime skirtumą tarp statinio atminties paskirstymo ir dinaminio atminties paskirstymo.

javac neatpažįstamas
statinis atminties paskirstymasdinaminis atminties paskirstymas
atmintis paskirstoma kompiliavimo metu.atmintis paskirstoma vykdymo metu.
Vykdant programą negalima padidinti atminties.Vykdant programą galima padidinti atmintį.
naudojamas masyve.naudojamas susietame sąraše.

Dabar trumpai pažvelkime į dinaminio atminties paskirstymo metodus.

malloc () paskiria vieną bloką prašomos atminties.
calloc() paskiria kelis prašomos atminties blokus.
realloc () perskirsto atmintį, kurią užima funkcijos malloc() arba calloc().
Laisvas() atlaisvina dinamiškai paskirstytą atmintį.

malloc() funkcija C

Funkcija malloc () paskiria vieną prašomos atminties bloką.

Vykdymo metu ji neinicijuoja atminties, todėl iš pradžių ji turi šiukšlinę vertę.

Jei atminties nepakanka, jis grąžina NULL.

Funkcijos malloc () sintaksė pateikta žemiau:

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

Pažiūrėkime funkcijos malloc() pavyzdį.

 #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() funkcija C

Funkcija calloc () paskiria kelis prašomos atminties blokus.

Iš pradžių jis inicijuoja visus baitus iki nulio.

Jei atminties nepakanka, jis grąžina NULL.

Funkcijos calloc () sintaksė pateikta žemiau:

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

Pažiūrėkime funkcijos calloc() pavyzdį.

 #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() funkcija C

Jei malloc () arba calloc () atminties nepakanka, galite perskirstyti atmintį naudodami funkciją realloc (). Trumpai tariant, tai keičia atminties dydį.

Pažiūrėkime funkcijos realloc() sintaksę.

 ptr=realloc(ptr, new-size) 

free() funkcija C

Atmintis, kurią užima funkcijos malloc() arba calloc(), turi būti atlaisvinta iškviečiant funkciją free(). Priešingu atveju jis eis atmintį iki programos išjungimo.

Pažiūrėkime funkcijos free() sintaksę.

 free(ptr)