logo

Dynaaminen muistin varaus C:ssä

Käsite dynaaminen muistin varaus c-kielellä antaa C-ohjelmoijalle mahdollisuuden varata muistia ajon aikana . Dynaaminen muistin varaaminen c-kielellä on mahdollista stdlib.h-otsikkotiedoston neljällä toiminnolla.

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

Ennen kuin opit yllä olevia toimintoja, ymmärrämme staattisen muistin varauksen ja dynaamisen muistin varauksen eron.

staattinen muistin varausdynaaminen muistin varaus
muisti varataan käännöshetkellä.muisti on varattu ajon aikana.
muistia ei voi lisätä ohjelmaa suoritettaessa.muistia voidaan lisätä ohjelmaa suoritettaessa.
käytetään taulukossa.käytetään linkitetyssä luettelossa.

Katsotaanpa nyt nopeasti dynaamiseen muistin varaamiseen käytettyjä menetelmiä.

malloc() varaa yhden lohkon pyydettyä muistia.
calloc() varaa useita lohkoja pyydettyä muistia.
realloc() kohdistaa uudelleen malloc()- tai calloc()-funktioiden käyttämän muistin.
vapaa() vapauttaa dynaamisesti varatun muistin.

malloc()-funktio C:ssä

Malloc()-funktio varaa yhden lohkon pyydettyä muistia.

Se ei alusta muistia suoritushetkellä, joten sillä on aluksi roskaarvo.

Se palauttaa NULL-arvon, jos muisti ei riitä.

java sopimusten nimeäminen

Malloc()-funktion syntaksi on annettu alla:

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

Katsotaanpa esimerkki malloc()-funktiosta.

 #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()-funktio C:ssä

Calloc()-funktio varaa useita lohkoja pyydettyä muistia.

Se alustaa aluksi kaikki tavut nollaan.

Se palauttaa NULL-arvon, jos muisti ei riitä.

Calloc()-funktion syntaksi on annettu alla:

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

Katsotaanpa esimerkki calloc()-funktiosta.

tcp ja ip malli
 #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()-funktio C:ssä

Jos muisti ei riitä malloc()- tai calloc()-funktiolle, voit jakaa muistin uudelleen realloc()-funktiolla. Lyhyesti sanottuna se muuttaa muistin kokoa.

Katsotaanpa realloc()-funktion syntaksia.

 ptr=realloc(ptr, new-size) 

free()-funktio C:ssä

Malloc()- tai calloc()-funktioiden käyttämä muisti on vapautettava kutsumalla free()-funktiota. Muuten se kuluttaa muistia ohjelman sulkemiseen asti.

Katsotaanpa free()-funktion syntaksi.

 free(ptr)