logo

Dynamická alokácia pamäte v C

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.

  1. malloc()
  2. calloc()
  3. realloc()
  4. 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ätedynamická 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(&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)>

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(&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)>

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)