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.
- malloc()
- calloc()
- realloc()
- vapaa()
Ennen kuin opit yllä olevia toimintoja, ymmärrämme staattisen muistin varauksen ja dynaamisen muistin varauksen eron.
staattinen muistin varaus | dynaaminen 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('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()-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('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()-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)