Koncept dynamická alokácia pamäte v jazyku c umožňuje programátorovi C alokovať pamäť za behu . Dynamická alokácia pamäte v jazyku c je možná pomocou 4 funkcií hlavičkového súboru stdlib.h.
- malloc()
- calloc()
- realloc()
- zadarmo()
Predtým, ako sa naučíme vyššie uvedené funkcie, pochopme rozdiel medzi statickou alokáciou pamäte a dynamickou alokáciou pamäte.
statické prideľovanie pamäte | dynamická alokácia pamäte |
---|---|
pamäť je pridelená v čase kompilácie. | pamäť je pridelená v čase spustenia. |
pamäť nie je možné zvýšiť počas vykonávania programu. | pamäť je možné zvýšiť počas vykonávania programu. |
používané v poli. | použité v prepojenom zozname. |
Teraz sa stručne pozrime na metódy používané na dynamickú alokáciu pamäte.
strsep
malloc() | alokuje jeden blok požadovanej pamäte. |
calloc() | alokuje viac blokov požadovanej pamäte. |
realloc() | prerozdelí pamäť obsadenú funkciami malloc() alebo calloc(). |
zadarmo() | uvoľňuje dynamicky alokovanú pamäť. |
funkcia malloc() v C
Funkcia malloc() alokuje jeden blok požadovanej pamäte.
Neinicializuje pamäť v čase vykonávania, takže na začiatku má hodnotu odpadu.
Ak pamäť nie je dostatočná, vráti hodnotu NULL.
java kódovanie if else príkaz
Syntax funkcie malloc() je uvedená nižšie:
ptr=(cast-type*)malloc(byte-size)
Pozrime sa na príklad funkcie malloc().
#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)>
funkcia calloc() v C
Funkcia calloc() alokuje viacero blokov požadovanej pamäte.
Spočiatku inicializuje všetky bajty na nulu.
Ak pamäť nie je dostatočná, vráti hodnotu NULL.
Syntax funkcie calloc() je uvedená nižšie:
ptr=(cast-type*)calloc(number, byte-size)
Pozrime sa na príklad funkcie calloc().
#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)>
funkcia realloc() v C
Ak pamäť nestačí na malloc() alebo calloc(), môžete pamäť prerozdeliť pomocou funkcie realloc(). Stručne povedané, zmení veľkosť pamäte.
poznámky pod čiarou
Pozrime sa na syntax funkcie realloc().
ptr=realloc(ptr, new-size)
funkcia free() v C
Pamäť obsadená funkciami malloc() alebo calloc() sa musí uvoľniť volaním funkcie free(). V opačnom prípade bude spotrebúvať pamäť až do ukončenia programu.
Pozrime sa na syntax funkcie free().
free(ptr)